LinderaCompatible with Milvus 2.5.11+
El tokenizador lindera realiza un análisis morfológico basado en diccionarios. Es una buena opción para idiomas -como el japonés, el coreano y el chino- cuyas palabras no están separadas por espacios.
Requisitos previos
Para utilizar el tokenizador lindera, debe utilizar una versión de Milvus especialmente compilada. Todos los diccionarios deben habilitarse explícitamente durante la compilación para poder utilizarse.
Para habilitar diccionarios específicos, inclúyalos en el comando de compilación:
make milvus TANTIVY_FEATURES=lindera-ipadic,lindera-ko-dic
La lista completa de diccionarios disponibles es: lindera-ipadic, lindera-ipadic-neologd, lindera-unidic, lindera-ko-dic, lindera-cc-cedict.
Por ejemplo, para activar todos los diccionarios:
make milvus TANTIVY_FEATURES=lindera-ipadic,lindera-ipadic-neologd,lindera-unidic,lindera-ko-dic,lindera-cc-cedict
Configuración
Para configurar un analizador que utilice el tokenizador lindera, establezca tokenizer.type en lindera y elija un diccionario con 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"}}
Parámetro |
Descripción |
|---|---|
|
El tipo de tokenizador. Se fija en |
|
Un diccionario utilizado para definir el vocabulario. Valores posibles:
|
Después de definir analyzer_params, puede aplicarlos a un campo VARCHAR al definir un esquema de colección. Esto permite a Milvus procesar el texto de ese campo utilizando el analizador especificado para una tokenización y filtrado eficientes. Para más detalles, consulte Ejemplo de uso.
Ejemplos
Antes de aplicar la configuración del analizador a su esquema de recopilación, verifique su comportamiento utilizando el método run_analyzer.
Configuración del analizador
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"}}
Verificación mediante 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
}
Salida esperada
{tokens: ['東京', 'スカイ', 'ツリー', 'の', '最寄り駅', 'は', 'とう', 'きょう', 'スカイ', 'ツリー', '駅', 'で']}