NESTの強い型のクライアントを使用してC#でElasticSearchを使用しています。エントリを含むインデックスがあります。
[ElasticType(Name = "Entry", IdProperty = "Id")]
public class Entry
{
public string Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Award { get; set; }
public int Year { get; set; }
}
ここで、Yearはエントリの年(例:2012)であり、Awardはエントリが獲得したAwardのタイプであり、nullの場合があります。
次に、ブーストを使用してこれらのエントリを検索し、さまざまなプロパティを探します。次のコードでは、説明に一致する結果よりも、タイトルに一致する結果を上位にランク付けする必要があります。
private IQueryResponse<Entry> GetMatchedEntries(string searchText)
{
return _elasticClient.Search<Entry>(
body =>
body.Query(q =>
q.QueryString(qs =>
qs.OnFieldsWithBoost(d =>
d.Add(entry => entry.Title, 5.0)
.Add(entry => entry.Description, 2.0))
.Query(searchText))));
}
私は今、賞を受賞した人たちから結果を後押しし、また新しいエントリーを後押しするように頼まれました(つまり、年ごとに)。
どうすればよいですか?インデックスサービスの一部として、または検索の一部として実行する必要があるものですか?