Elija el analizador adecuado para su caso de uso
Esta guía se centra en la toma de decisiones prácticas para la selección del analizador. Para obtener detalles técnicos sobre los componentes del analizador y sobre cómo añadir parámetros del analizador, consulte Descripción general del analizador.
Comprender los analizadores en 2 minutos
En Milvus, un analizador procesa el texto almacenado en este campo para hacerlo consultable para funciones como la búsqueda de texto completo (BM25), la concordancia de frase o la concordancia de texto. Piense en él como un procesador de texto que transforma su contenido sin procesar en tokens buscables.
Un analizador funciona en un proceso simple de dos etapas:
Flujo de trabajo del analizador
Tokenización (obligatoria): Esta etapa inicial aplica un tokenizador para dividir una cadena continua de texto en unidades discretas y significativas llamadas tokens. El método de tokenización puede variar significativamente según el idioma y el tipo de contenido.
Filtrado de tokens (opcional): Tras la tokenización, se aplican filtros para modificar, eliminar o refinar los tokens. Estas operaciones pueden incluir la conversión de todos los tokens a minúsculas, la eliminación de palabras comunes sin sentido (como stopwords) o la reducción de palabras a su forma raíz (stemming).
Ejemplo:
Input: "Hello World!"
1. Tokenization → ["Hello", "World", "!"]
2. Lowercase & Punctuation Filtering → ["hello", "world"]
Por qué es importante la elección del analizador
La elección de un analizador incorrecto puede hacer que no se puedan buscar documentos relevantes o que se obtengan resultados irrelevantes.
En la tabla siguiente se resumen los problemas más comunes causados por una selección incorrecta del analizador y se ofrecen soluciones prácticas para diagnosticar los problemas de búsqueda.
Problema |
Síntoma |
Ejemplo (entrada y salida) |
Causa (mal analizador) |
Solución (buen analizador) |
|---|---|---|---|---|
Sobre-tokenización |
Las consultas de texto para términos técnicos, identificadores o URL no encuentran documentos relevantes. |
|
|
Utilice un |
Subtokenización |
La búsqueda de un componente de una frase de varias palabras no devuelve documentos que contengan la frase completa. |
|
Analizador con un |
Utilice un |
Desajustes de idioma |
Los resultados de la búsqueda para un idioma específico no tienen sentido o no existen. |
Texto chino: |
|
Utilice un analizador específico del idioma, como |
Primera pregunta: ¿Es necesario elegir un analizador?
En muchos casos no es necesario hacer nada especial. Determinemos si eres uno de ellos.
Comportamiento por defecto: standard analyzer
Si no especifica un analizador al utilizar funciones de recuperación de texto como la búsqueda de texto completo, Milvus utiliza automáticamente el analizador standard analizador.
El analizador standard:
Divide el texto en espacios y signos de puntuación
Convierte todos los tokens a minúsculas
Elimina un conjunto integrado de palabras de parada comunes en inglés y la mayoría de los signos de puntuación.
Ejemplo de transformación:
Input: "The Milvus vector database is built for scale!"
Output: ['the', 'milvus', 'vector', 'database', 'is', 'built', 'scale']
Criterios de decisión: Comprobación rápida
Utilice esta tabla para determinar rápidamente si el analizador por defecto de standard satisface sus necesidades. Si no lo hace, tendrá que elegir un camino diferente.
Su contenido |
¿Está bien el analizador estándar? |
Por qué |
Qué necesita |
|---|---|---|---|
Entradas de blog en inglés |
✅ Sí |
El comportamiento por defecto es suficiente. |
Use el predeterminado (no necesita configuración). |
Documentos en chino |
❌ No |
Las palabras chinas no tienen espacios y se tratarán como un solo token. |
Utilice un |
Documentación técnica |
❌ No |
Se eliminan los signos de puntuación de términos como |
Cree un analizador personalizado con un |
Lenguas separadas por espacios como el texto francés/español |
⚠️ Tal vez |
Los caracteres acentuados ( |
Se recomienda utilizar un analizador personalizado con el |
Idiomas multilingües o desconocidos |
❌ No |
El analizador |
Utilice un analizador personalizado con el Como alternativa, considere la posibilidad de configurar analizadores multilingües o un identificador de idioma para una gestión más precisa del contenido multilingüe. |
Si el analizador predeterminado de standard no puede satisfacer sus necesidades, deberá implementar uno diferente. Tiene dos opciones:
Ruta A: Utilizar analizadores integrados
Los analizadores integrados son soluciones preconfiguradas para los lenguajes más comunes. Son la forma más sencilla de empezar cuando el analizador estándar predeterminado no se adapta perfectamente.
Analizadores integrados disponibles
Analizador |
Soporte de idiomas |
Componentes |
Notas |
|---|---|---|---|
La mayoría de los idiomas separados por espacios (inglés, francés, alemán, español, etc.) |
|
Analizador de uso general para el tratamiento inicial del texto. Para situaciones monolingües, los analizadores específicos por idioma (como |
|
Dedicado al inglés, que aplica stemming y eliminación de palabras vacías para una mejor correspondencia semántica en inglés. |
|
Recomendado para contenidos exclusivamente en inglés por encima de |
|
Chino |
|
Actualmente utiliza el diccionario de chino simplificado por defecto. |
Ejemplo de implementación
Para utilizar un analizador incorporado, basta con especificar su tipo en analyzer_params al definir el esquema de campos.
# Using built-in English analyzer
analyzer_params = {
"type": "english"
}
# Applying analyzer config to target VARCHAR field in your collection schema
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=200,
enable_analyzer=True,
analyzer_params=analyzer_params,
)
Para obtener información detallada sobre su uso, consulte Búsqueda de texto completo, Coincidencia de texto o Coincidencia de frase.
Ruta B: Crear un analizador personalizado
Cuando las opciones incorporadas no satisfacen sus necesidades, puede crear un analizador personalizado combinando un tokenizador con un conjunto de filtros. De este modo, tendrá un control total sobre el procesamiento del texto.
Paso 1: Seleccionar el tokenizador en función del idioma
Elija el tokenizador en función del idioma principal de su contenido:
Lenguas occidentales
Para las lenguas separadas por espacios, tiene estas opciones:
Tokenizer |
Cómo funciona |
Lo mejor para |
Ejemplos |
|---|---|---|---|
Divide el texto en función de los espacios y los signos de puntuación |
Texto general, puntuación mixta |
|
|
Divide el texto sólo en función de los espacios en blanco |
Contenido preprocesado, texto formateado por el usuario |
|
Lenguas de Asia oriental
Las lenguas basadas en diccionarios requieren tokenizadores especializados para una segmentación adecuada de las palabras:
Chino
Tokenizador |
Cómo funciona |
Lo mejor para |
Ejemplos |
|---|---|---|---|
Segmentación basada en diccionario chino con algoritmo inteligente |
Recomendado para contenidos en chino - combina diccionario con algoritmos inteligentes, diseñados específicamente para el chino |
|
|
Análisis morfológico puro basado en diccionario con diccionario chino(cc-cedict) |
En comparación con |
|
Japonés y coreano
Idioma |
Tokenizador |
Opciones de diccionario |
Mejor para |
Ejemplos |
|---|---|---|---|---|
Japonés |
ipádico (de uso general), ipádico-neológico (términos modernos), unídico (académico) |
Análisis morfológico con tratamiento de nombres propios |
|
|
Coreano |
Análisis morfológico del coreano |
|
Lenguas multilingües o desconocidas
Para contenidos en los que los idiomas son impredecibles o están mezclados dentro de los documentos:
Tokenizer |
Cómo funciona |
Lo mejor para |
Ejemplos |
|---|---|---|---|
Tokenización compatible con Unicode (International Components for Unicode) |
Escrituras mixtas, idiomas desconocidos o cuando basta con una simple tokenización. |
|
Cuándo utilizar icu:
Lenguajes mixtos en los que la identificación del idioma no es práctica.
No se desea la sobrecarga de los analizadores multilingües o del identificador de idioma.
El contenido tiene una lengua principal con palabras extranjeras ocasionales que contribuyen poco al significado global (por ejemplo, texto en inglés con nombres de marcas o términos técnicos esporádicos en japonés o francés).
Enfoques alternativos: Para un tratamiento más preciso del contenido multilingüe, considere la posibilidad de utilizar analizadores multilingües o el identificador de idioma. Para más información, consulte Analizadores multilingües o Identificador de lengua.
Paso 2: Añadir filtros para mayor precisión
Una vez seleccionado el tokenizador, aplique filtros en función de sus requisitos de búsqueda específicos y de las características del contenido.
Filtros de uso común
Estos filtros son esenciales para la mayoría de las configuraciones de idiomas separados por espacios (inglés, francés, alemán, español, etc.) y mejoran significativamente la calidad de la búsqueda:
Filtro |
Cómo funciona |
Cuándo utilizarlo |
Ejemplos |
|---|---|---|---|
Convertir todos los tokens a minúsculas |
Universal - se aplica a todos los idiomas con distinción entre mayúsculas y minúsculas |
|
|
Reducir las palabras a su forma raíz |
Lenguas con inflexiones de palabras (inglés, francés, alemán, etc.) |
Para el inglés:
|
|
Eliminar palabras comunes sin sentido |
Para la mayoría de las lenguas - especialmente eficaz para las lenguas separadas por espacios |
|
Para las lenguas de Asia Oriental (chino, japonés, coreano, etc.), utilice filtros específicos para cada lengua. Estas lenguas suelen utilizar métodos distintos para procesar el texto y puede que no se beneficien significativamente de la normalización.
Filtros de normalización de texto
Estos filtros normalizan las variaciones de texto para mejorar la coherencia de las coincidencias:
Filtro |
Cómo funciona |
Cuándo utilizarlo |
Ejemplos |
|---|---|---|---|
Convertir caracteres acentuados en equivalentes ASCII |
Contenido internacional, contenido generado por el usuario |
|
Filtrado de símbolos
Controle qué tokens se conservan en función del contenido o la longitud de los caracteres:
Filtro |
Cómo funciona |
Cuándo utilizarlo |
Ejemplos |
|---|---|---|---|
Eliminar signos de puntuación independientes |
Limpia los resultados de los tokenizadores |
|
|
Mantener sólo letras y números |
Contenido técnico, procesamiento de texto limpio |
|
|
Elimina los tokens fuera del rango de longitud especificado |
Filtrar el ruido (tokens excesivamente largos) |
|
|
Filtrado personalizado basado en patrones |
Requisitos de token específicos del dominio |
|
Filtros específicos de idioma
Estos filtros gestionan características específicas del idioma:
Filtro |
Idioma |
Funcionamiento |
Ejemplos |
|---|---|---|---|
Alemán |
Divide palabras compuestas en componentes buscables |
|
|
Chino |
Mantiene caracteres chinos + alfanuméricos |
|
|
Chino |
Mantiene sólo caracteres chinos |
|
Paso 3: Combinar e implementar
Para crear su analizador personalizado, defina el tokenizador y una lista de filtros en el diccionario analyzer_params. Los filtros se aplican en el orden en que aparecen en la lista.
# Example: A custom analyzer for technical content
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase", "alphanumonly"]
}
# Applying analyzer config to target VARCHAR field in your collection schema
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=200,
enable_analyzer=True,
analyzer_params=analyzer_params,
)
Final: Pruebe con run_analyzer
Valide siempre su configuración antes de aplicarla a una colección:
# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"
# Run analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Analyzer output:", result)
Problemas comunes a comprobar:
Exceso de símbolos: Términos técnicos divididos incorrectamente.
Infra-tokenización: Frases mal separadas
Ausencia de tokens: Filtrado de términos importantes
Para más información, consulte run_analyzer.
Configuraciones recomendadas por caso de uso
Esta sección proporciona configuraciones recomendadas de tokenizadores y filtros para casos de uso comunes cuando se trabaja con analizadores en Milvus. Elija la combinación que mejor se adapte a su tipo de contenido y a sus requisitos de búsqueda.
Antes de aplicar un analizador a su colección, le recomendamos que utilice run_analyzer para probar y validar el rendimiento del análisis de texto.
Idiomas con tildes (francés, español, alemán, etc.)
Utilice un tokenizador standard con conversión a minúsculas, stemming específico del idioma y eliminación de stopwords. Esta configuración también funciona para otros idiomas europeos modificando los parámetros language y stop_words.
# French example
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding", # Handle accent marks
{
"type": "stemmer",
"language": "french"
},
{
"type": "stop",
"stop_words": ["_french_"]
}
]
}
# For other languages, modify the language parameter:
# "language": "spanish" for Spanish
# "language": "german" for German
# "stop_words": ["_spanish_"] or ["_german_"] accordingly
Contenido en inglés
Para el tratamiento de textos en inglés con filtrado exhaustivo. También puede utilizar el analizador english integrado:
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
{
"type": "stemmer",
"language": "english"
},
{
"type": "stop",
"stop_words": ["_english_"]
}
]
}
# Equivalent built-in shortcut:
analyzer_params = {
"type": "english"
}
Contenido en chino
Utilice el tokenizador jieba y aplique un filtro de caracteres para conservar sólo los caracteres chinos, las letras latinas y los dígitos.
analyzer_params = {
"tokenizer": "jieba",
"filter": ["cnalphanumonly"]
}
# Equivalent built-in shortcut:
analyzer_params = {
"type": "chinese"
}
Para el chino simplificado, cnalphanumonly elimina todos los tokens excepto los caracteres chinos, el texto alfanumérico y los dígitos. Esto evita que la puntuación afecte a la calidad de la búsqueda.
Contenido en japonés
Utilice el tokenizador lindera con el diccionario japonés y los filtros para limpiar la puntuación y controlar la longitud de los tokens:
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict": "ipadic" # Options: ipadic, ipadic-neologd, unidic
},
"filter": [
"removepunct", # Remove standalone punctuation
{
"type": "length",
"min": 1,
"max": 20
}
]
}
Contenido en coreano
De forma similar al japonés, utilice el tokenizador lindera con el diccionario coreano:
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict": "ko-dic"
},
"filter": [
"removepunct",
{
"type": "length",
"min": 1,
"max": 20
}
]
}
Contenido mixto o multilingüe
Cuando trabaje con contenidos que abarquen varios idiomas o utilicen guiones de forma impredecible, comience con el analizador icu. Este analizador compatible con Unicode gestiona de forma eficaz la mezcla de guiones y símbolos.
Configuración multilingüe básica (sin stemming):
analyzer_params = {
"tokenizer": "icu",
"filter": ["lowercase", "asciifolding"]
}
Procesamiento multilingüe avanzado:
Para controlar mejor el comportamiento de los tokens en distintos idiomas:
Utilice una configuración de analizador multilingüe. Para más detalles, consulte Analizadores multilingües.
Implemente un identificador de idioma en su contenido. Para más información, consulte Identificador de idioma.
Integración con funciones de recuperación de texto
Después de seleccionar su analizador, puede integrarlo con las funciones de recuperación de texto proporcionadas por Milvus.
Búsqueda de texto completo
Los analizadores influyen directamente en la búsqueda de texto completo basada en BM25 mediante la generación de vectores dispersos. Utilice el mismo analizador para la indexación y la consulta con el fin de garantizar una tokenización coherente. Los analizadores específicos de un idioma suelen proporcionar una mejor puntuación BM25 que los genéricos. Para más información, consulte la sección Búsqueda de texto completo.
Coincidencia de texto
Las operaciones de concordancia de texto realizan una concordancia exacta de tokens entre las consultas y el contenido indexado basándose en los resultados del analizador. Para más información, consulte la sección Coincidencia de texto.
Coincidencia de frases
La concordancia de frases requiere una tokenización coherente en expresiones de varias palabras para mantener los límites y el significado de las frases. Para obtener más información sobre la implementación, consulte Coincidencia de frases.