2012-09-27 18 views
5

Intentando controlar el orden en que se aplican los filtros de tokens en ElasticSearch.Orden de control de los filtros de tokens en ElasticSearch

Sé por los documentos que el tokenizador se aplica primero, luego los filtros token, pero no mencionan cómo se determina el orden de los filtros token.

He aquí un fragmento YAML de mi análisis de secuencia de comandos de configuración:

 KeywordNameIndexAnalyzer : 
      type : custom 
      tokenizer : whitespace 
      filter : [my_word_concatenator, keyword_ngram] 

yo habría pensado que my_word_concatenator ha de aplicarse antes keyword_ngram, pero parece que no es el caso. ¿Alguien sabe cómo (o si) se puede controlar el orden de estos filtros?

¡Muchas gracias!

+0

Sus expectativas son correctas. Los filtros del [analizador personalizado] (https://github.com/elasticsearch/elasticsearch/blob/a0a8538ef9c7d8f24dc9b9f081c548f7d9e8b7cd/src/main/java/org/elasticsearch/index/analysis/CustomAnalyzer.java#L98) se aplican en el orden especificado por la matriz de filtros. ¿Podría darnos un ejemplo, donde este no parece ser el caso? – imotov

+0

Tiene razón; la razón por la que el orden parecía estar fuera fue porque utilicé una combinación sin sentido de tokenizador y filtros de tokens. Si tiene curiosidad, my_word_concatenator quita espacio en blanco, pero como estaba usando el tokenizer de espacios en blanco, no había espacios en blanco en los tokens que llegaban a los filtros. Entonces 1 no estaba sucediendo en absoluto, en lugar de suceder después de 2. –

Respuesta

4

Un analizador está hecho de un tokenizer, que divide el texto en tokens. Después de eso, los filtros token aparecen en la imagen, en el orden en que los configuró, ya que está proporcionando una matriz. Si tiene dudas, le sugiero que eche un vistazo al analyze api, a través del cual puede probar realmente cómo funciona un analizador sin indexar ningún texto.

1

Esto está mejor documentado en la sección custom analyzers. así que la orden sí importa en su caso

Cuestiones relacionadas