LinderaCompatible with Milvus 2.5.11+
Der Tokenizer lindera führt eine wörterbuchbasierte morphologische Analyse durch. Er ist eine gute Wahl für Sprachen - wie z.B. Japanisch, Koreanisch und Chinesisch - deren Wörter nicht durch Leerzeichen getrennt sind.
Voraussetzungen
Um den lindera tokenizer zu verwenden, müssen Sie eine speziell kompilierte Milvus-Version verwenden. Alle Wörterbücher müssen während der Kompilierung explizit aktiviert werden, um verwendet werden zu können.
Um bestimmte Wörterbücher zu aktivieren, fügen Sie sie in den Kompilierungsbefehl ein:
make milvus TANTIVY_FEATURES=lindera-ipadic,lindera-ko-dic
Die vollständige Liste der verfügbaren Wörterbücher ist: lindera-ipadic, lindera-ipadic-neologd, lindera-unidic, lindera-ko-dic, lindera-cc-cedict.
Beispiel: Um alle Wörterbücher zu aktivieren:
make milvus TANTIVY_FEATURES=lindera-ipadic,lindera-ipadic-neologd,lindera-unidic,lindera-ko-dic,lindera-cc-cedict
Konfiguration
Um einen Analyzer zu konfigurieren, der den Tokenizer lindera verwendet, setzen Sie tokenizer.type auf lindera und wählen ein Wörterbuch mit dict_kind.
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict_kind": "ipadic"
}
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer",
new HashMap<String, Object>() {{
put("type", "lindera");
put("dict_kind", "ipadic");
}});
analyzerParams = map[string]any{"tokenizer": map[string]any{"type": "lindera", "dict_kind": "ipadic"}}
Parameter |
Beschreibung |
|---|---|
|
Der Typ des Tokenizers. Dieser ist auf |
|
Ein Wörterbuch, das zur Definition des Vokabulars verwendet wird. Mögliche Werte:
|
Nachdem Sie analyzer_params definiert haben, können Sie sie bei der Definition eines Sammelschemas auf ein VARCHAR Feld anwenden. Dadurch kann Milvus den Text in diesem Feld unter Verwendung des angegebenen Analysators für eine effiziente Tokenisierung und Filterung verarbeiten. Einzelheiten finden Sie unter Beispiel für die Verwendung.
Beispiele
Bevor Sie die Analyzer-Konfiguration auf Ihr Sammelschema anwenden, überprüfen Sie das Verhalten mit der Methode run_analyzer.
Analyzer-Konfiguration
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict_kind": "ipadic"
}
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer",
new HashMap<String, Object>() {{
put("type", "lindera");
put("dict_kind", "ipadic");
}});
analyzerParams = map[string]any{"tokenizer": map[string]any{"type": "lindera", "dict_kind": "ipadic"}}
Verifizierung mit run_analyzerCompatible with Milvus 2.5.11+
from pymilvus import (
MilvusClient,
)
client = MilvusClient(uri="http://localhost:19530")
# Sample text to analyze
sample_text = "東京スカイツリーの最寄り駅はとうきょうスカイツリー駅で"
# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard analyzer output:", result)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.RunAnalyzerReq;
import io.milvus.v2.service.vector.response.RunAnalyzerResp;
ConnectConfig config = ConnectConfig.builder()
.uri("http://localhost:19530")
.build();
MilvusClientV2 client = new MilvusClientV2(config);
List<String> texts = new ArrayList<>();
texts.add("東京スカイツリーの最寄り駅はとうきょうスカイツリー駅で");
RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
.texts(texts)
.analyzerParams(analyzerParams)
.build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
import (
"context"
"encoding/json"
"fmt"
"github.com/milvus-io/milvus/client/v2/milvusclient"
)
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: "localhost:19530",
APIKey: "root:Milvus",
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
bs, _ := json.Marshal(analyzerParams)
texts := []string{"東京スカイツリーの最寄り駅はとうきょうスカイツリー駅で"}
option := milvusclient.NewRunAnalyzerOption(texts).
WithAnalyzerParams(string(bs))
result, err := client.RunAnalyzer(ctx, option)
if err != nil {
fmt.Println(err.Error())
// handle error
}
Erwartete Ausgabe
{tokens: ['東京', 'スカイ', 'ツリー', 'の', '最寄り駅', 'は', 'とう', 'きょう', 'スカイ', 'ツリー', '駅', 'で']}