Sitecore Solr搜索得分值

问题描述:

我想获得每个返回结果项目的得分值,但问题是所有项目返回相同的得分值。我正在使用从sitecore 6.6升级的sitecore 7.2站点。我使用Solr的版本4.10.2-0Sitecore Solr搜索得分值

以下是我使用的代码:

var contentPredicate = PredicateBuilder.True<customSearchResultItem>(); 
contentPredicate = contentPredicate.And(p => p.Content.Matches(SearchKey.Boost(1.0f))); 

IQueryable<SearchResultItem> query = context.GetQueryable<customSearchResultItem>().Where(contentPredicate); 

var hits = query.GetResults().Hits; 

foreach (var item in hits) 
{ 
    scores.Add(item.Score); 
} 

请您告知,如果缺少了什么?或者是否有任何应用来完成此项工作的配置?

+0

评分的价值是什么? –

+0

你尝试过不同的'SearchKey'值吗?你可以尝试使用'p.Content.Contains'还是'p.Content.Like'并查看它们是否返回不同的分数? –

+0

基于关键字搜索得分值正在变化,因为结果项目会有所不同,但它对于返回的所有项目始终是相同的值:现在是1.811966 –

下应该存在于应用提升功能,并据此排序项:

  • 搜索应该与一个以上的条款,否则retrived项目将具有相同的分数值
  • 当搜索包含除了子句(谓词)之外,它们将在得分值上具有相同的权重,除非应用增强方法“.Boost(10.0f)。
  • 子句之间的组合应该是”OR“,否则返回的项必须匹配所有谓词这意味着相同的得分值。

在Sitecore知识库中有一篇关于这个帖子的文章,指出hit的分数乘以0,因此所有结果都有相同的分数。

该帖子与Lucene相关,但我相信它与Solr也有关系。

要解决

  1. 在Sitecore的导航到 /sitecore/templates/System/Templates/Sections/Indexing部分。
  2. 为此部分创建标准值项目。
  3. 在上述标准值项目的Boost Value字段中输入值1。
  4. 保存,发布和重指数

由于你是一个升级版6.6,ContentSearch出现之前,标准值是不存在的,也没有在升级脚本创建的实例。

+0

我试过了,它仍然是所有项目的相同值:https://kb.sitecore。net/articles/524252 –

+0

好吧我尝试了两个子句,现在从一个项目到另一个项目的得分值是不同的,现在的问题是,如果我想测量一个字段的搜索精度,比如示例中的匹配数量)是否可以使用提升来做到这一点?如果没有,是否有另一种方式来做到这一点? 最后要显示的百分比表明基于关键字搜索内容字段的结果项目的准确性? –