2

次のフィールドにインデックスを付けたい:

quick brown fox

そのため、正確に 3 つの単語すべてを任意の順序で検索するとヒットしますが、いくつかの単語 (「brown fox」など) だけを検索するとヒットしません。

つまり、インデックス/クエリを作成したいので、次のことが当てはまります。

# input for field
quick brown fox

# hits
brown fox quick
fox quick brown
quick brown fox
...

# misses
quick brown
fox
quick brown fox red
...

これを行うには、カスタムトークナイザーを作成する必要があるようです。入力ストリームをこれらのキーワード順列に分解するトークナイザー。どこから始めればよいかわかりません。ルビー/タイヤを使用しています。それは正しい考えですか?独自のトークナイザーを作成するにはどうすればよいですか?

4

1 に答える 1

1

これらの単語をアルファベット順に並べ替え、単語に表示されない区切り記号を使用してそれらを結合し、分析されていない単一のトークンとして索引付けします。したがって、quick brown foxとして索引付けされbrown-fox-quickます。この操作は、索引付けと検索の両方で実行する必要があります。理想的には、これはアナライザーによって行われますが、このようなことを行うアナライザーを私は知りません。そのため、独自のカスタム アナライザーを (Java プラグインとして) 作成するか、elasticsearch の外部のコードにこのロジックを実装する必要があります。

于 2013-07-18T02:18:34.090 に答える