NESTの厳密に型指定されたクライアントを使用してC#でElastic Searchを使用しています。NESTフィールドブーストを使用した弾性検索
[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; }
}
年は例えば2012、エントリーの年であり、そして賞はエントリが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))));
}
私は今、賞を受賞しているもので、結果をブーストし、また、(年によって)新しいエントリを後押しするように求めてきました。
どうすればよいですか?インデックスサービスの一環として、または検索の一環として行う必要があるのでしょうか?
感謝を - 現在のドキュメントよりも間違いなく、より便利。 –
これは、Elasticsearch <1.0でのみ動作することに注意してください。 Elasticsearch> = 1.0ではなく、function scoreクエリを使用する必要があります。 https://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-function-score-query.html。 https://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-function-score-query.htmlの解決策も参照してください。 –