【问题标题】:SolrNet - Score always 0SolrNet - 得分总是 0
【发布时间】:2010-09-14 13:57:15
【问题描述】:

我有一个使用 SolrNet 对 Solr 实例的简单查询,但由于某种原因,分数始终为 0。

我已验证:

  • 有一个字段 [SolrField("Score")] 公共双分数{得到;放; } 在我的映射类中

  • 已检查正在搜索的字段是字符串而不是文本。

还有什么问题?请帮忙

更新:

  var results = solr.Query(q,
                                   new QueryOptions
                                    {
                                        OrderBy = new[] { new SolrNet.SortOrder("DateSubmitted", Order.ASC) },
                                        Fields = new[] { "score" }

                                    }
                                  );

【问题讨论】:

    标签: solr solrnet


    【解决方案1】:

    就像 Pascal 指出的,默认情况下不返回分数,所以你必须做fl=*,score to get everything and the score。在 SolrNet 中,这转换为 Fields = new[] {"*","score"}

    映射也区分大小写,因此您需要[SolrField("score")] 而不是[SolrField("Score")]

    【讨论】:

    • 使用 SolrNet 我们如何获得 max() 以便我们可以计算每个返回文档的相关百分比?
    【解决方案2】:

    请确保在请求时(fl 参数)字段列表中包含分数,因为默认情况下不返回分数。

    【讨论】:

    • 谢谢 thsi 构造(见上文)是否足够?我试过了,仍然没有得分。
    • 我将首先直接使用 Solr 控制台检查是否使用设置为 score 的 fl 参数发出请求是否正确返回文档。然后我会使用 http 请求分析器(tcpmon 或 fiddler)检查参数是否正确发送到 Solr。
    • 谢谢,很有帮助。想通了。
    【解决方案3】:

    就我而言,我不得不使用 IndexField 属性而不是 SolrField

    [IndexField("score")]
    public decimal Score {get; set;}
    

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 1970-01-01
      • 2018-12-23
      • 2011-08-04
      • 2020-06-08
      • 2018-09-27
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      相关资源
      最近更新 更多