c#弹性搜索嵌套,如果输出文档分数是id的相同顺序

时间:2015-09-14 22:26:20

标签: c# elasticsearch nest

我正在使用以下代码来获取基于给定查询的结果列表。我想要做的是,如果文档分数彼此相等,则按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())
       );

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

好的,然后按分数订购后按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())
   );