2012-09-27 26 views
5

ElasticSearchでトークンフィルタが適用される順序を制御しようとしています。ElasticSearchのトーク​​ンフィルタの制御順序

トークナイザが最初に適用され、トークンフィルタが適用されることはドキュメントからわかりますが、トークンフィルタの順序がどのように決定されるかについては言及していません。

は、ここに私の分析のセットアップスクリプトからYAMLスニペットです:

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

私はmy_word_concatenatorkeyword_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セクションで詳しく説明しています。 あなたのケースではオーダーオーダーが重要です。

関連する問題