私のプロジェクトでは、主にスペルミスや同じ名前の異なるスペルを見つけるためにあいまい一致を使用しています。エラスティック検索のあいまい一致がどのように機能し、タイトルに記載されている 2 つのパラメーターがどのように使用されるかを正確に理解する必要があります。
私が理解しているように、min_similarityは、クエリされた文字列がデータベース内の文字列と一致する割合です。この値がどのように計算されるかについての正確な説明が見つかりませんでした。
私が理解しているmax_expansionsは、検索を実行するレーベンシュタイン距離です。これが実際にレーベンシュタイン距離である場合、それは私にとって理想的な解決策でした. とにかく、それは機能していません。たとえば、「Samvel」という単語があります
queryStr max_expansions matches?
samvel 0 Should not be 0. error (but levenshtein distance can be 0!)
samvel 1 Yes
samvvel 1 Yes
samvvell 1 Yes (but it shouldn't have)
samvelll 1 Yes (but it shouldn't have)
saamvelll 1 No (but for some weird reason it matches with Samvelian)
saamvelll anything bigger than 1 No
ドキュメントには、私が実際に理解していないことが書かれています:
Add max_expansions to the fuzzy query allowing to control the maximum number
of terms to match. Default to unbounded (or bounded by the max clause count in
boolean query).
ですから、これらのパラメータが検索結果にどのように影響するかを正確に説明してください。