1751849281
2025-07-01 07:04:00
ゴール: 最新の公開または最後に更新されたコンテンツが検索結果で高くランク付けされるようにするには、クエリを変更して、 Remencyに基づいてブースト。これには通常、日付フィールドに基づいてコンテンツをブーストすることが含まれます PublishedDate または LastUpdated。
関連性を検討しながら、最近のコンテンツに優先順位を付けるためにクエリを更新する方法は次のとおりです。
var result = query.ApplyBestBets()
.BoostMatching(x => ((IContent)x).SearchTitle().MatchCaseInsensitive(contentFilter.SearchQuery), 1.5)
.OrderByDescending(x => ((IContent)x).LastUpdated) // Boost by recency
.Take(pageSize)
.Skip((pageNo - 1) * pageSize)
.StaticallyCacheFor(TimeSpan.FromSeconds(CacheSpan))
.GetResult(hitSpec);
説明:
OrderByDescending(x => ((IContent)x).LastUpdated)最近更新されたコンテンツが最初に表示されるようにします。- バランスを取りたい場合 関連性と最新性、あなたはaを考慮するかもしれません カスタムスコアリング機能 またはa 複合ブースト それは両方を組み合わせます。
————
また、以下のように関連性と新鮮さのバランスをとる、より高度なスコアリング戦略を実装できます。
実装する バランスの取れたスコアリング戦略 それは両方を考慮します 関連性 そして 最新性、aを使用できます カスタムブースト関数。このアプローチにより、次のことができます。
- 検索クエリに一致するコンテンツをブーストします(関連性)。
- 最近公開または更新されたコンテンツをブーストします(Remency)。
- 両方を複合スコアに結合します。
aを使用してクエリを更新する方法は次のとおりです カスタムブースト式:
var result = query.ApplyBestBets()
.BoostMatching(x => ((IContent)x).SearchTitle().MatchCaseInsensitive(contentFilter.SearchQuery), 1.5)
.OrderByDescending(x =>
((IContent)x).SearchTitle().MatchCaseInsensitive(contentFilter.SearchQuery) ? 1 : 0 +
GetRecencyScore(((IContent)x).LastUpdated)
)
.Take(pageSize)
.Skip((pageNo - 1) * pageSize)
.StaticallyCacheFor(TimeSpan.FromSeconds(CacheSpan))
.GetResult(hitSpec);
定義する必要があります GetRecencyScore このような:
private double GetRecencyScore(DateTime lastUpdated)
{
var daysOld = (DateTime.UtcNow - lastUpdated).TotalDays;
// Example scoring: newer content gets higher score
if (daysOld
なぜこれが機能するのか:
- それはを与えます 最近のコンテンツよりも高いスコア、しかし、それでも考慮しています クエリマッチ。
- あなたはできる 重みを調整します で
GetRecencyScoreあなたのニーズに合わせて。
2025年7月1日
#公開された日付までに関連性を高めます