4

ワイルドカード クエリを使用して名前を検索していますが、ASCII 文字を検索すると、ユーザーが "Hélè*" を検索したときのようにうまく機能せず、検索できません。

名前フィールドでASCIIフォールディングと小文字を使用するアナライザーを既に作成していることに注意してください。

また、query_string で検索を行うと、正常に動作します。それは、ワイルドカードが ascii フォールディングを分析せず、クエリ文字列が分析するということですか? はいの場合、ascii でワイルドカードを実現する方法はありますか?

どんな助けでも大歓迎です。

ありがとう、モーシン

4

2 に答える 2

5

に設定してfieldクエリを使用してみてください。analyze_wildcardtrue

デフォルトでは、elasticsearch はワイルドカード クエリのテキストを分析しようとせず、一部のクエリでのみ小文字化します。このため、クエリは で始まるすべての用語を検索しますがhélè、ASCII 折りたたみフィルターのため、インデックスにそのような用語はありません。

于 2012-12-10T16:29:56.580 に答える
0

Solr にはReversedWildcardFilterFactoryがあり、インデックス時に使用されます。クエリにワイルドカード文字が含まれている場合に使用すると、ASCII に変換されません。それ以外の場合は、ASCII を使用して変換および検索されます。ASCIIFoldingFilterFactory の後に定義できます。

似たようなものが Lucene に存在するかどうかはわかりませんが、ソース コードを参照して FilterFactory を作成できます。

また、このドキュメントも役に立ちます。

于 2012-12-10T16:27:39.967 に答える