SOLR 3.5.0でelevateハンドラーを設定しようとしていますが、一致タイプに基づいて同じフィールドに異なるブースト値を定義するdismax形式の以下のクエリに相当するものが必要です(完全一致は200を取得し、ワイルドカード一致は100を取得します) 。
q = name:(foo *^100.0またはfoo^200.0)
これは、この問題を解決する 1 つの方法です。
WhiteSpaceTokenizer (大文字と小文字を区別する必要がある場合は LowerCaseFilter も) のみでテキスト フィールドを保持します。完全一致にはこのフィールドを使用します。このフィールドを と呼びましょうname_ws
。
でワイルドカード クエリを使用する代わりに、アナライザー チェーンのEdgeNGramTokenizername_ws
でテキスト タイプのコピー フィールドを使用します。これにより、次のようなトークンが出力されます。
food -> f, fo, foo, food
このフィールドを と呼びましょうname_edge
。
次に、この dismax クエリを発行できます。
q=foo&defType=dismax&qf=name_ws^200+name_edge^100
debugQuery=on
(スコアリングが希望どおりに機能するかどうかを確認するために追加します。)