2012-09-27 7 views
5

Cercando di controllare l'ordine che i filtri dei token vengono applicati in elasticsearch.ordine di controllo dei filtri di token a elasticsearch

So per la documentazione che il tokenizzatore viene applicato per primo, poi i filtri di token, ma non menzionano come l'ordine dei filtri di token è determinata.

Ecco un frammento YAML dal mio script di installazione analisi:

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

avrei pensato che sarebbe my_word_concatenator essere applicato prima keyword_ngram, ma sembra che questo non è il caso. Qualcuno sa come (o se) l'ordine di questi filtri può essere controllato?

Grazie mille!

+0

Le vostre aspettative sono corrette. I filtri in [analizzatore personalizzato] (https://github.com/elasticsearch/elasticsearch/blob/a0a8538ef9c7d8f24dc9b9f081c548f7d9e8b7cd/src/main/java/org/elasticsearch/index/analysis/CustomAnalyzer.java#L98) vengono applicati nell'ordine specificato dall'array del filtro. Potrebbe fornire un esempio, dove questo non sembra essere il caso? – imotov

+0

Hai ragione - il motivo per cui l'ordine sembrava off era perché ho usato una combinazione senza senso di tokenizer e filtri token. Se sei curioso, my_word_concatenator elimina lo spazio bianco, ma dal momento che stavo usando il tokenizzatore degli spazi bianchi, non c'erano spazi bianchi nei token che arrivavano ai filtri. Quindi 1 non stava accadendo affatto, al contrario di accadere dopo il 2. –

risposta

4

Un analizzatore è costituito da un tokenizer, che divide il testo in token. Dopo che i filtri token entrano nell'immagine, nell'ordine in cui li hai configurati, dal momento che stai fornendo un array. Se avete dubbi che avrei suggerirei per fare uno sguardo al analyze api, attraverso il quale si può effettivamente verificare come un analizzatore funziona senza indicizzazione qualsiasi testo.

1

questo è meglio documentata nella sezione custom analyzers. così sì ordine che conta nel tuo caso