English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Durante el procesamiento de la consulta en la operación de búsqueda, el módulo de análisis analiza el contenido de cualquier índice. Este módulo consta de analizador, generador de tokens, filtro de tokens y filtro de caracteres. Si no se define un analizador, el analizador integrado, los generadores de tokens y los filtros de tokens se registrarán en el módulo de análisis por defecto.
En el siguiente ejemplo, utilizamos un analizador estándar, que se utiliza sin especificar otro analizador. Analizará la oración según la gramática y generará las palabras utilizadas en la oración.
POST _analyze { "analyzer": "estándar", "text": "Hoy el clima está hermoso" {}
Después de ejecutar el código anterior, obtenemos la respuesta siguiente:
{ "tokens": [ { "token" : "hoy's", "start_offset": 0, "end_offset": 7, "type": "", "position": 0 }, { "token": "weather", "start_offset": 8, "end_offset": 15, "type": "", "position": 1 }, { "token" : "es", "start_offset": 16, "end_offset": 18, "type": "", "position": 2 }, { "token": "beautiful", "start_offset": 19, "end_offset": 28, "type": "", "position": 3 {} ]] {}
Podemos usar varios parámetros para configurar el analizador estándar para obtener nuestros requisitos personalizados.
En el siguiente ejemplo, configuramos el analizador estándar con max_token_length de5.
Para esto, primero creamos el índice utilizando un analizador con el parámetro max_length_token.
PUT "index_"4_analisis { "settings": { "analysis": { "analyzer": { "mi_analizador_ingles": { "type": "estándar", "max_token_length": 5, "stopwords": "_ingles_" {} {} {} {} {}
A continuación, utilizamos el analizador de texto como se muestra a continuación. Tenga en cuenta que los tokens no se muestran, ya que tienen dos espacios al principio y dos al final. Para la palabra "is", que tiene un espacio al principio y uno al final. Si los quitamos, se convierte en4una letra con espacios, lo que no significa que sea una palabra. Al menos debería haber un carácter no espaciado al principio o al final para que se convierta en una palabra contable.
POST "index_"4_analisis/_analizar { "analyzer": "mi_analizador_ingles", "text": "Hoy el clima está hermoso" {}
Después de ejecutar el código anterior, obtenemos la respuesta siguiente:
{ "tokens": [ { "token": "today" "start_offset": 0, "end_offset": 5, "type": "", "position": 0 }, { "token": "s", "start_offset": 6, "end_offset": 7, "type": "", "position": 1 }, { "token": "weath", "start_offset": 8, "end_offset": 13, "type": "", "position": 2 }, { "token": "er", "start_offset": 13, "end_offset": 15, "type": "", "position": 3 }, { "token": "beaut", "start_offset": 19, "end_offset": 24, "type": "", "position": 5 }, { "token": "iful", "start_offset": 24, "end_offset": 28, "type": "", "position": 6 {} ]] {}
La siguiente tabla enumera una lista de varios analizadores y sus descripciones-
número | Analizadores y descripciones |
---|---|
1 | Analizador estándar (standard) La configuración de stopwords y max_token_length puede establecerse para este analizador. Por defecto, la lista de stopwords está vacía y max_token_length es255. |
2 | Analizador simple (simple) Este analizador se compone de tokenizer en minúsculas. |
3 | Análisis de espacio en blanco (whitespace) Este analizador se compone de marcadores de espacio |
4 | Análisis de paradas (stop) Se puede configurar stopwords y stopwords_path. Por defecto, stopwords se inicializa con stopwords en inglés y stopwords_path contiene la ruta del archivo de texto que contiene stopwords |
El generador de tokens se utiliza para generar tokens a partir del texto de Elasticsearch. Considerando los espacios o otros signos de puntuación, el texto se puede descomponer en marcadores. Elasticsearch tiene muchos tokenizadores integrados que se pueden usar en analizadores personalizados.
A continuación, se muestra un ejemplo de tokenizer, que descompone el texto en varios tokens al encontrar caracteres no alfabéticos, pero también convierte todas las palabras en minúsculas, como se muestra a continuación-
POST _analyze { "tokenizer": "lowercase", "text": "It Was a Beautiful Weather 5 Días atrás." {}
Después de ejecutar el código anterior, obtenemos la respuesta siguiente:
{ "tokens": [ { "token": "it", "start_offset": 0, "end_offset": 2, "type": "word", "position": 0 }, { "token": "was", "start_offset": 3, "end_offset": 6, "type": "word", "position": 1 }, { "token": "a", "start_offset": 7, "end_offset": 8, "type": "word", "position": 2 }, { "token": "beautiful", "start_offset": 9, "end_offset": 18, "type": "word", "position": 3 }, { "token": "weather", "start_offset": 19, "end_offset": 26, "type": "word", "position": 4 }, { "token": "days", "start_offset": 29, "end_offset": 33, "type": "word", "position": 5 }, { "token": "ago", "start_offset": 34, "end_offset": 37, "type": "word", "position": 6 {} ]] {}
La lista de generadores de tokens y sus descripciones se muestran en la siguiente tabla:
número | motor de análisis y descripción |
---|---|
1 | marcador estándar Este marcador se construye sobre la base de un marcador basado en la gramática, max_token_length puede configurarse para este marcador. |
2 | marcador NGram de borde(edgeNGram) Configuraciones como min_gram, max_gram, token_chars pueden configurarse para este marcador. |
3 | marcador de palabras clave Esto generará toda la entrada como salida, buffer_size puede configurarse para esto. |
4 | marcador de letras Esto capturará toda la palabra hasta que se encuentre con un carácter no alfabético. |