如何在NEST弹性搜索中根据命中率对结果进行排序

本文关键字:命中率 结果 排序 NEST 搜索 | 更新日期: 2023-09-27 17:57:43

我正在使用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字段将包含大文本,是否可以像谷歌搜索结果一样,在消息中只获得搜索关键字周围的几行?

如何在NEST弹性搜索中根据命中率对结果进行排序

你好,按命中率排序,只需使用

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()中的数量