9

先月から1年後までの範囲の「startTime」フィールドを持つドキュメントを含むsolrインスタンスがあります。startTimeフィールドが現在の時刻に近いドキュメントのスコアを上げるためのブーストクエリ/関数を追加したいと思います。

これまで、rordを使用して新しいドキュメントにブーストを追加する例をたくさん見てきましたが、このような例は見たことがありません。

誰か教えてもらえますか?

ありがとう

4

2 に答える 2

17

Solr 1.4+ を使用している場合、関数クエリで "ms" 関数にアクセスできます。最新性によるブーストの標準的で教科書的なアプローチは次のとおりです。

recip(ms(NOW,startTime),3.16e-11,1,1)

ms は、2 つの引数の間のミリ秒数を示します。この式は全体として、現在の日付のドキュメントではスコアを 1 上げ、1 年前の日付のドキュメントでは 1/2、2 年前の日付のドキュメントでは 1/3 などのスコアを上げます。 ( http://wiki.apache.orgを参照) /solr/FunctionQuery#Date_Boosting、Sean Timm が指摘したように。)

あなたの場合、将来の日付のドキュメントがあり、上記の関数によって負のスコアが割り当てられるため、次のように絶対値を投入することをお勧めします。

recip(abs(ms(NOW,startTime)),3.16e-11,1,1)

abs(ms(NOW,startTime)) は、startTime から現在までのミリ秒数を返します。負でないことが保証されています。

それは良い出発点です。必要に応じて、3.16e-11 がアグレッシブすぎる場合やアグレッシブでない場合は、3.16e-11 を微調整できます。

接線的に言えば、ms 関数は TrieDate クラスに基づくフィールドでのみ機能し、従来の Date および LegacyDate クラスでは機能しません。schema.xml が Solr 1.4 の例に基づいている場合、日付フィールドはおそらく既に正しい形式になっています。

于 2010-04-20T16:20:13.350 に答える
1

Solr1.4で日付計算を行うことができます。

http://wiki.apache.org/solr/FunctionQuery#Date_Boosting

于 2010-04-20T15:54:26.860 に答える