1

特定の文字で始まるファセットの一致を返すにはどうすればよいですか? たとえば、Elasticsearch は、クエリ"T*"を使用して文字 T で始まるすべてのタイトルを返すことを提案しています。ただし、これは、文字 T で始まるすべての単語を含むタイトルを返すようです。たとえば、"Trees and Shrubs" と "木の剪定の仕方。」「木と低木」だけを返したいです。を使用してみ"^T*"ましたが、SearchPhraseExecutionException が返されます。

4

1 に答える 1

2

デフォルトでは、elasticsearchはデフォルト アナライザーを使用してフィールドを分析します。これは、フィールドを通常英語の単語境界で分割されたトークンに分割します。したがって、「ツリーの剪定方法」は (「方法」、「方法」、「剪定」、「ツリー」) に分割され、トークン「ツリー」はその後、クエリ「T*」と一致します。これを回避するには、フィールドがオブジェクトマッピングにあることを指定する必要があります。これにより、elasticsearch はフィールド値を 1 つの巨大なトークンとして効果的に処理し、プレフィックス クエリに対して正しく照合します。not_analyzed

プレフィックス queryも確認できますが、これは事実上、同じクエリを発行する別の方法にすぎません。フィールドがマッピングで分析されないように指定する必要があります。

于 2013-09-12T05:55:57.867 に答える