2

Elasticsearch インデックス内には、テキストを含むさまざまな行があります

「……牛乳2%……」。

ユーザーが「2% ミルク」などのクエリを検索フィールドに入力すると、内部的にクエリに変換されます

title:(+milk* +2%*)

すべての用語が必要であり、「2% 乳脂肪」を含む行に関心がある可能性があるためです。

上記のこのクエリは、ゼロ ヒットを返します。クエリを次のように変更します

title:(+milk* +2%)

妥当な結果を返します。では、最初のクエリの '*' 演算子が機能しないのはなぜでしょうか?

4

2 に答える 2

2

マッピングを設定しない限り、「%」記号はトークン化プロセスで削除されます。基本的に「2% ミルク」はトークン2milk.

"2%*" を検索すると2%2%a2%b、 などのトークンが検索され、インデックス付きのトークンと一致しないため、ヒットしません。

「2%」を検索すると、インデックス時と同じトークン化プロセスが実行され (これを指定できますが、デフォルトのトークン化は同じです)、 token2に一致するドキュメントが検索されます。あなたはヒットします。

分析/トークン化プロセスの詳細については、こちらを参照してください。カスタム マッピングを定義することで、必要な分析を設定できます。

幸運を!

于 2013-07-25T12:26:09.400 に答える