1

SOLR 3.5.0でelevateハンドラーを設定しようとしていますが、一致タイプに基づいて同じフィールドに異なるブースト値を定義するdismax形式の以下のクエリに相当するものが必要です(完全一致は200を取得し、ワイルドカード一致は100を取得します) 。

q = name:(foo *^100.0またはfoo^200.0)

4

1 に答える 1

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(スコアリングが希望どおりに機能するかどうかを確認するために追加します。)

于 2013-02-21T06:05:11.973 に答える