2017-09-27 10 views
0

私のSOLRインデックスには、多くのフィールドで構成されるドキュメントがあります。name,、descriptiontagsなどです。照会ですが、はフィールドに一致する用語が何回現れるかを考慮しません(TFIDF、BM25なし)。Apache Solr:クエリに一致するフィールドの数で並べ替え

Documents: 
ID: 100, title: "foo foo bar bar", name: "foo bar" 
ID: 101, title: "foo bar", name: "gibberish foo" 
ID: 102, title: "foo bar", name: "foo bar" 

そして、私は "FOOバー" を検索すると、私は結果の順にソートされたい:

  1. 102(2つのフィールドが一致)
  2. 例えば

  3. 100(2つのフィールドが一致するので、100と102は全く同じスコアにする必要があります)
  4. 101(1フィールドマッチング)

これをSOLRでどうすれば達成できますか? sort句は何が必要ですか?

答えて

1

(tags:stack)^=1のような定数スコアクエリを使用して、用語頻度を無効にすることができます。これは特別な構文であることに注意してください。次に、eDisMaxクエリパーサーを使用してフィールドをqfに指定します(ブースティングの可能性があります)。tieの値を1と指定します。これにより、すべてのサブクエリ(フィールド)がスコアの計算に使用されていることを確認する必要があります。

これは、一致するフィールドの数が多いほどスコアが高くなり、用語の頻度がスコアリングに使用されなくなるため、必要な処理を行う必要があります。

関連する問題