PinyinCompatible with Milvus 3.0.x
La búsqueda de texto en chino suele requerir que los usuarios introduzcan los caracteres chinos exactamente tal y como aparecen en el texto indexado. En los procesos de búsqueda de nombres, autocompletado y búsqueda mientras se escribe, los usuarios suelen escribir pinyin en lugar de caracteres chinos. Por ejemplo, un usuario puede escribir « zuqiu » para buscar « 足球 ». El filtro « pinyin » añade tokens de pinyin a la salida del analizador, de modo que el texto en chino pueda coincidir con la entrada en pinyin sin necesidad de mantener un campo de pinyin independiente.
El filtro « pinyin » se suele utilizar con el tokenizador Jieba para texto chino. Funciona en una cadena de filtros de un analizador personalizado y puede generar múltiples formas de tokens pinyin para un mismo token chino.
Configuración
Para utilizar las opciones predeterminadas, especifica « "pinyin" » en la sección « filter » de « analyzer_params ».
analyzer_params = {
"tokenizer": "jieba",
"filter": ["pinyin"],
}
Esta configuración abreviada conserva los tokens chinos originales y genera tokens pinyin a nivel de carácter. No genera pinyin unido ni iniciales pinyin a menos que se habiliten esas opciones explícitamente.
Para un control total, especifica el filtro como un objeto y configura los formatos de los tokens de pinyin que genera Milvus.
analyzer_params = {
"tokenizer": "jieba",
"filter": [
{
"type": "pinyin",
"keep_original": True,
"keep_full_pinyin": True,
"keep_joined_full_pinyin": False,
"keep_separate_first_letter": False,
}
],
}
El filtro admite los siguientes parámetros.
| Parámetro | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
keep_original | Booleano | true | Mantiene el token chino original en la salida del analizador. |
keep_full_pinyin | Booleano | true | Genera tokens de pinyin a nivel de carácter. Por ejemplo, « 中文 » genera « zhong » y « wen ». |
keep_joined_full_pinyin | Booleano | false | Genera un token pinyin combinado por cada token de origen. Por ejemplo, « 中文 » genera « zhongwen ». |
keep_separate_first_letter | Booleano | false | Genera un token con las iniciales en pinyin para cada token de origen. Por ejemplo, 中文 genera zw. |
El filtro actúa sobre los tokens generados por el tokenizador. Para texto en chino, utilízalo con un tokenizador como jieba.
Ejemplos
Antes de aplicar la configuración del analizador al esquema de su colección, compruebe su comportamiento con run_analyzer.
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
sample_text = "中文测试"
Hacer coincidir texto en chino con tokens de pinyin a nivel de carácter
El filtro predeterminado pinyin conserva los tokens chinos originales y genera tokens de pinyin a nivel de carácter.
analyzer_params = {
"tokenizer": "jieba",
"filter": ["pinyin"],
}
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
Resultado esperado:
['中文', 'zhong', 'wen', '测试', 'ce', 'shi']
Coincidir términos chinos con pinyin unido
Activa keep_joined_full_pinyin cuando necesites que un término chino coincida con su forma completa de pinyin unificado.
analyzer_params = {
"tokenizer": "jieba",
"filter": [
{
"type": "pinyin",
"keep_original": True,
"keep_full_pinyin": False,
"keep_joined_full_pinyin": True,
"keep_separate_first_letter": False,
}
],
}
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
Resultado esperado:
['中文', 'zhongwen', '测试', 'ceshi']
Coincidir términos chinos con las iniciales del pinyin
Activa « keep_separate_first_letter » cuando necesites que un término chino coincida con las iniciales de su forma en pinyin.
analyzer_params = {
"tokenizer": "jieba",
"filter": [
{
"type": "pinyin",
"keep_original": True,
"keep_full_pinyin": False,
"keep_joined_full_pinyin": False,
"keep_separate_first_letter": True,
}
],
}
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
Resultado esperado:
['中文', 'zw', '测试', 'cs']