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

问题描述 投票:0回答:3

我们正在使用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,SimilarResult,Term等,通常与Solr文档类无关,它们也不适合返回分数数据。

solr solrnet
3个回答
1
投票

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

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

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


1
投票

如果您使POCO类的分数可为空,则可以将同一对象用于索引和结果

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

0
投票

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

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

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

Fields = {"*", "score"}
© www.soinside.com 2019 - 2024. All rights reserved.