【问题标题】:c# elastic search nest how to output the document scorec# elastic search nest如何输出文档分数
【发布时间】:2015-09-15 07:44:07
【问题描述】:

我想从弹性搜索中输出每个结果的分数。但我不确定我怎么能得到这个。

以下是我当前运行查询的代码:

  var searchResults = client.Search<Place>(s => s
             .From(0)
             .Size(5)
             .Explain(true)
             .TrackScores(true)
             .Query(q => q

                    .QueryString(fqqs1 => fqqs1
                        .OnFieldsWithBoost(d => d
                            .Add("name", 5.0)
                        )
                        .Query("west midlands birmingham")
                    )

             )
             .Sort(sort => sort.OnField("_score").Descending())
             .Sort(sort => sort.OnField(f => f.id).Ascending())
       );

// Output the results to console
        Console.WriteLine("\nTotal Hits: " + searchResults.HitsMetaData.Hits.Count + " out of " + searchResults.HitsMetaData.Total);

        List<Result> results = new List<Result>();
        foreach (Place result in searchResults.Documents)
        {
            results.Add(new Result
            {
                woeid = Convert.ToInt32(result.id),
                name = result.name,
                admin1 = result.admin1,
                admin2 = result.admin2,
                type = result.type
            });
            Console.WriteLine(result.id + " > " + result.name + " > " + result.admin1 + " > " + result.admin2 + " > " + result.type); 
        }

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    ISearchResponse&lt;T&gt; 上使用.Hits 属性集合 - 该集合包含.Score 属性中每个文档以及.Source 属性中文档的分数。

    【讨论】:

      【解决方案2】:

      您可以按分数排序。例如:Sort(sort => sort.OnField("_score").Descending())

       var result = client.Search(q => q
                       .Index(your-index-name)
                       .From(0)
                       .Type("post")
                       .Fields("firstName","LastName")
                       .TrackScores(true)
                       .Size(12) 
                       .Query(SearchQuery)                           
                       .Sort(sort => sort.OnField("_score").Descending())
                      );
      

      Nest 7 的代码示例

      var sorts = new List<ISort>();
      sorts.Add(new FieldSort { Field = "_score", Order = SortOrder.Descending });
      
      var searchRequest = new SearchRequest<ElasticIndexGroupProduct>()
                  {
                      Profile = true,
                      From = (pageNumber - 1) * pageSize,
                      Size = pageSize,
                      Version = true,
                      Sort = sorts,
                      Query = new MatchAllQuery()
                      Aggregations = aggrigations
                  };
      
       var searchResponse = _client.Search<ElasticIndexGroupProduct>(searchRequest);
                  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多