我们正在使用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文档类无关,它们也不适合返回分数数据。
您可以通过两个POCO类来完成此操作。一种用于映射检索到的结果,另一种用于索引。确保以这种方式添加分数字段:
[SolrField("score")]
public double Score { get; set; }
仅在用于检索数据的第一类中。
如果您使POCO类的分数可为空,则可以将同一对象用于索引和结果
[SolrField("score")]
public double? Score { get; set; }
[Maurizio和HungryPipo的回答给了我一些提示,但这是对我有用的代码(在sitecore项目上:]
[IndexField("score")]
public decimal Score { get; set; }
此外,我必须将其添加到查询选项中:
Fields = {"*", "score"}