2

結果が solr からソートされて返される方法についての要件があります。高レベルでは、次のようになります。

  • 日付でソートされたsubset1フィールドの完全一致
  • 日付でソートされたsubset2フィールドの完全一致
  • 日付でソートされたsubset1フィールドの部分一致
  • 日付でソートされたsubset2フィールドの部分一致
  • 日付でソートされたsubset1フィールドのあいまい一致
  • 日付でソートされたサブセット 2 フィールドのあいまい一致

現在、solrスコアと日付でソートしています。solr をクエリするとき、古いドキュメントに逆ブーストを与えるブースト関数を使用しているため、古いドキュメントは下に移動し、新しいドキュメントも一番上に「フロート」します。適切なフィールドをブーストして、正確、部分的、およびあいまい一致は正しい順序で行われます。これは私をそこに連れて行きました。

トリッキーな部分です。この要件は、「red ford truck」のようなものを検索した場合、用語の頻度に関係なく、「red ford truck」を含むドキュメントは同じスコアを付けられるべきであると述べています。新しいドキュメントを一番上に押し上げても、用語の頻度が高いドキュメントを十分に押し下げるほどスコアには影響しません。

たとえば、2 つのドキュメントがあるとします: doc 1:

  • Field1:「赤いフォード トラックは本当に赤く、速いトラックでした」
  • 日付: 2010 年 1 月 1 日

ドキュメント 2:

  • フィールド 1:「赤いフォード トラックが路上に駐車されていた」
  • 日付:2012/10/1

「レッド フォード トラック」を検索すると、ドキュメント 2 が最初に表示されます。これは、ドキュメント 2 の方が新しく、クエリされた用語がすべて含まれているためです。現在、ドキュメント 1 が最初に表示されます。これは、Field1 に一致するものが多く、逆ブーストがそれを押し下げるのに十分ではないためです。

それでは、私の質問に対して、solr には、ドキュメントに対してクエリされた用語を 1 回だけ一致させるように指示する構成ポイントがありますか? T-SQL の Exists のようなものです。

他に役立つ情報があればお知らせください。お時間をいただきありがとうございます。

4

1 に答える 1

2

これらのスコアは、頻度とフィールドの長さの両方の用語のために異なります。

omitNormsフィールドの長さに関してあなたが探しているもののようです。この前の回答を見てください。また、そのフィールドではインデックス時間のブーストも無効になることに注意してください。

trueの場合、このフィールドに関連付けられているノルムを省略します(これにより、フィールドの長さの正規化とインデックス時間のブーストが無効になり、メモリが節約されます)。

omitTermFreqAndPositions頻度という用語に関してあなたが探しているもののようです:

trueの場合、このフィールドの投稿から用語の頻度、位置、およびペイロードを省略します。これは、その情報を必要としないフィールドのパフォーマンスを向上させる可能性があります。また、インデックスに必要なストレージスペースも削減されます。このオプションを使用してフィールドで発行された位置に依存するクエリは、ドキュメントを黙って見つけることができません。このプロパティは、テキストフィールドではないすべてのフィールドに対してデフォルトでtrueに設定されています。

于 2012-08-02T08:27:45.590 に答える