Fessで英単語の入力ミスを含む検索をすると、小文字なら見つかるのに先頭を大文字にすると見つからない場合があります。PR #3726は、通常の検索に自動で加わる曖昧検索を、検索語の解析後に行う修正案です。
入力した文字列と索引の語をそろえる
従来の処理では、索引側で小文字化や語尾処理を受けた語に対して、入力した文字列をそのまま使って編集距離を計算していました。修正案は検索解析器を通してから曖昧一致させます。PRの検証用索引では、fabianに対するFbian、onboardingに対するOnbordingのような入力で改善が報告されています。件数や改善幅は索引と解析器によるもので、すべての環境で同じ結果になる保証はありません。
foo-barのように複数のトークンへ分かれる入力は、曖昧検索部分でもすべてのトークンを要求します。一部だけの一致によって候補が広がりすぎることを抑えるためです。
設定の初期値は変わらない
新しい有効化設定はありません。修正を含む検証ビルドで、既存のquery.boost.fuzzy.*を引き続き使います。標準値は次のとおりです。
query.boost.fuzzy.min.length=4
query.boost.fuzzy.title=0.01
query.boost.fuzzy.content=0.005
query.boost.fuzzy.title.fuzziness=AUTO
query.boost.fuzzy.content.fuzziness=AUTO
titleとcontentの両方で、prefix_lengthは0、expansionsは10、transpositionsはtrueです。最小長4の判定は入力文字列の長さですが、AUTOが許す編集距離は解析後の各トークンの長さに応じて決まります。短くなった語では許される編集回数も変わりえます。
日本語の誤字訂正を追加する変更ではない
漢字・ひらがな・カタカナ・ハングルを含む入力には、この暗黙の曖昧検索を追加しません。日本語などの誤字訂正を新たに提供する機能ではありません。明示的なfoo~1の構文、フレーズ検索、言語別フィールドの処理も今回の変更対象外です。解析後にストップワードだけになる入力は、この部分から近似語のヒットを得ません。
検証時は同じ索引で、小文字と大文字、語尾変化、ハイフン入り、正しく綴った単語を比較します。通常の単語にも低スコアの候補が増える可能性があり、上位順位が常に同じとは限りません。適合率と検索結果の順序も確認してから導入を判断します。