1

我们正在使用 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 文档属性。我们可以通过将“score”作为搜索请求中的字段添加到 solr 来返回分数数据。但问题是我们如何接受 solr 结果中的分数数据,因为这不是 solr 文档类的一部分。我们使用以下代码段来执行搜索:

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

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

4

3 回答 3

2

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

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

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

Fields = {"*", "score"}
于 2020-03-02T20:59:09.373 回答
1

如果您使 POCO 类的 Score 可以为空,则可以使用相同的对象进行索引和结果

[SolrField("score")]
public double? Score { get; set; }
于 2014-10-16T14:59:48.920 回答
1

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

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

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

于 2013-07-10T14:34:37.960 回答