2012-09-27 30 views
5

嘗試控制令牌過濾器在ElasticSearch中的應用順序。ElasticSearch中令牌過濾器的控制順序

我從文檔中知道,標記器先應用,然後標記過濾器,但他們沒有提及如何確定標記過濾器的順序。

下面是從我的分析設置腳本YAML片斷:

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

我本來以爲會my_word_concatenator以前keyword_ngram應用,但似乎不是如此。任何人都知道如何(或如果)這些過濾器的順序可以控制?

非常感謝!

+0

您的期望是正確的。按照順序應用[自定義分析器]中的過濾器(https://github.com/elasticsearch/elasticsearch/blob/a0a8538ef9c7d8f24dc9b9f081c548f7d9e8b7cd/src/main/java/org/elasticsearch/index/analysis/CustomAnalyzer.java#L98)由過濾器數組指定。你能否提供一個例子,在這種情況下似乎不是這樣? – imotov

+0

你是對的 - 訂單似乎關閉的原因是因爲我使用了令牌和令牌過濾器的無意義組合。如果你很好奇,my_word_concatenator會去掉空格,但是因爲我使用了空格標記器,所以在標記中沒有空格到達過濾器。所以1根本沒有發生,而是在2之後發生。 –

回答

4

分析器由一個標記器組成,它將文本分成標記。在令牌過濾器進入圖片之後,按照您配置它們的順序,因爲您提供了一個數組。如果您有疑問,我建議您查看analyze api,通過它您可以實際測試分析儀的工作原理,而無需索引任何文本。

1

這在custom analyzers部分有更好的記錄。 因此,您的訂單確實重要