0

私はsolrを初めて使用します。フィールドのブーストで私を助けてください。

こんなお問い合わせがあり、

q=name:test* OR description:test*

名前に500、説明に50のブースト/ウェイトエイジを適用したい.

例: 「テスト」用語が、あるレコードの名前フィールドに 1 回出現し、別のレコードの説明フィールドに 20 回出現すると考えてみましょう。ブースティング計算は次のように行われます。

名前の場合: 1 X 500 = 500

説明: 20 X 50 = 1000。

その結果、ブースト値の高いレコードが一番上に来るはずです。したがって、上記の計算に基づいて、説明フィールドに 20 件の一致があるレコードが、名前フィールドに 1 件の一致があるレコードの後に​​一番上に来るはずです。

誰かがこれに対する解決策を持っている場合は、提供してください

前もって感謝します。

4

1 に答える 1

0

ブースト属性を使用してインデックス時にフィールドをブーストしたり、クエリでブーストを適用したりできます(さらに高度な機能q=name:test*^50 OR description:test*もいくつかあります)。

ただし、デフォルトでは、Lucene は長さの正規化を適用し、長いフィールドよりも短いフィールドの一致を効果的に重み付けすることに注意してください。それがあなたが再現しようとしているもののように少し聞こえます。

スコア計算を提供したものと同じくらい単純にする必要がある場合は、独自のSimilarity クラスを作成する必要があると思います。

于 2014-01-22T22:35:22.477 に答える