インデックス作成中にブーストすることができます。これはかなり長い間RavenDBに含まれていますが、ドキュメントにはまったく含まれていません。ただし、ここで説明するいくつかの単体テストがあります。
これらのテストは単一のブースト値を示していますが、代わりに他のドキュメント値から簡単に計算できます。これはインデックスエントリが書き込まれるときに行われるため、完全なドキュメントを利用できます。これを、参照した投稿で説明されている手法と組み合わせることができるはずです。
Map = docs => from doc in docs
select new
{
Title = doc.Title.Boost(doc.DateCreated.Ticks / 1000000f)
};
タイトルフィールドだけでなく、ドキュメント全体をブーストすることもできます。これは、検索アルゴリズムに他のフィールドがある場合に役立つことがあります。
Map = docs => from doc in docs
select new
{
doc.Title
}.Boost(doc.DateCreated.Ticks / 1000000f);
ブースト量に使用する適切な値を試す必要がある場合があります。ミリ秒で10,000ティックがあるので、それが私がそのような大きな数で割る理由です。
また、作業しているのがUTCであることに注意してDateTime
ください。または、それがどこから来るかを制御できない場合は、DateTimeOffset
代わりにを使用してください。なんで?ある基準点から計算された期間を使用していて、異なるタイムゾーンまたは夏時間の変更の前後で結果があいまいにならないようにするためです。