我正在使用NEST(c#)与Elasticsearch进行通信。然而,结果不是基于命中分数,我如何根据命中分数对结果进行排序,而且我只获得10条记录。以下是我的代码示例
var result = client.Search(q => q
.Index(IndexName)
.From(0)
.Type("post")
.Fields("title","message")
.Size(10)
.Query(fq1 => fq1
.QueryString(fqqs1 => fqqs1
.OnFieldsWithBoost(d => d
.Add("title", 7.0)
.Add("message", 5.0))
.Query(SearchQuery))));
我的message
字段将包含大量文字,是否可能只是在搜索关键字周围搜索关键字几行,就像谷歌搜索结果一样
答案 0 :(得分:3)
你好,按hitscore排序只需使用
var result = client.Search(q => q
.Index(IndexName)
.From(0)
.Type("post")
.Fields("title","message")
.TrackScores(true)
.Size(10)
.Query(fq1 => fq1
.QueryString(fqqs1 => fqqs1
.OnFieldsWithBoost(d => d
.Add("title", 7.0)
.Add("message", 5.0)
)
.Query(SearchQuery)
)
.Sort(sort => sort.OnField("_score").Descending())
);
要获得更多记录,只需增加Size()
中的数字即可