如果输出文档分数按id排序相同,则使用c#弹性搜索巢

本文关键字:搜索 文档 输出 排序 id 如果 | 更新日期: 2023-09-27 18:12:40

我使用下面的代码来获取基于给定查询的结果列表。我想做的是,如果文档分数彼此相等,然后按id排序结果,最低的数字首先出现。

注意,这应该只影响那些彼此得分相等的文档,而不是所有给定的结果,我将限制结果为最好的10。

var searchResults = client.Search<Place>(s => s
             .From(0)
             .Size(10)
             .TrackScores(true)
             .Query(q => q
                    .QueryString(fqqs1 => fqqs1
                        .OnFieldsWithBoost(d => d
                            .Add("name", 5.0)
                        )
                        .Query("birmingham, south east hospital")
                    )
             )
             .Sort(sort => sort.OnField("_score").Descending())
       );

谢谢你的帮助。

如果输出文档分数按id排序相同,则使用c#弹性搜索巢

好的,那么先按分数排序,再按id排序。这样的:

var searchResults = client.Search<Place>(s => s
         .From(0)
         .Size(10)
         .TrackScores(true)
         .Query(q => q
                .QueryString(fqqs1 => fqqs1
                    .OnFieldsWithBoost(d => d
                        .Add("name", 5.0)
                    )
                    .Query("birmingham, south east hospital")
                )
         )
         .Sort(sort => sort.OnField("_score").Descending())
         .Sort(sort => sort.OnField(f=>f.Id).Ascending())
   );