0

Sphinx を使用すると、ドキュメントを好きなようにランク付けできます。

SELECT *
FROM someIndex
WHERE MATCH('foo bar')
OPTION ranker=expr('<any rank expression>')

Solrで同じ動作を実現するにはどうすればよいですか? {!boost q=<some_boost_expression>}唯一の方法ですか?たとえば、単語数が多いドキュメントほどスコアが高くなる必要があります。

A: foo bar blah blah blah
B: foo bar

foo barクエリの関連性を高めるには、A が必要です。現在、B の方がスコアが高くなっています。

4

1 に答える 1

0

ブースト関数 (bf 属性) を適用して、単純なクエリ用語ブーストよりも複雑な方法でスコアリングをカスタマイズできます。これはDisMax クエリ パーサーで利用でき、ご想像のとおり、拡張 dismax クエリ パーサーでさらに拡張されています。

標準は、フィールドの長さに関する情報がすぐに利用できると通常期待される場所ですが、見つかったフィールド レベルのブーストと組み合わされます。ロジック (より長いフィールドをより重視する) は、デフォルトの逆です。得点。カスタムの類似度を作成しない限り、フィールド ブーストとそのロジックのサポートが難しくなります。ちなみに、ノルムはインデックス時に保存され、クエリ時に計算されません。

于 2013-04-12T18:04:20.743 に答える