如何使用Solrnet返回搜索结果分数

时间:2013-05-04 10:07:41

标签: solr solrnet

我们正在使用SolrNet API来索引和搜索一组文档。表示Solr文档的相应POCO是

internal class IndexDocument
{
    [SolrField("DocId")]
    public long DocId { get; set; }

    [SolrField("DocTitle")]
    public string DocTitle { get; set; }

    [SolrField("Content")]
    public string Content { get; set; }
}

我们可以索引数据并成功返回搜索结果。要求是返回结果项的相关性分数以及solr文档属性。我们可以通过将“得分”作为搜索请求中的字段添加到solr来返回得分数据。但问题是我们如何接受solr结果中的得分数据,因为这不是solr文档类的一部分。我们使用以下代码段来执行搜索:

SolrQueryResults<IndexDocument> results = SolrInstance.Query(query, options);

我们可以从solr管理界面执行查询时返回得分数据但是我们如何在结果对象中返回得分数据,因为搜索结果仅以IndexDocument类的形式返回。 SolrQueryResults类的其他参数,如Grouping,Higlights,SimilarResults,Terms等,通常与Solr文档类无关,也不适合返回分数数据。

3 个答案:

答案 0 :(得分:1)

您可以使用两个POCO课程完成此操作。 一个用于映射检索的结果,另一个用于索引。 确保以这种方式添加分数字段:

[SolrField("score")]
public double Score { get; set; }

仅在用于检索数据的第一个类中。

答案 1 :(得分:1)

如果您使POCO课程的分数为可为空,则可以使用相同的对象进行索引和结果

[SolrField("score")]
public double? Score { get; set; }

答案 2 :(得分:1)

Maurizio和HungryPipo的回答给了我一些提示,但这是对我有用的代码(在一个sitecore项目上):

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

此外,我必须将其添加到查询选项中:

Fields = {"*", "score"}
相关问题