Sitecore Solr搜索得分值



我试图获得每个返回的结果项的分数值,但问题是所有项目返回相同的分数值。我使用的是从sitecore 6.6升级的sitecore 7.2站点。我使用的solr版本4.10.2-0

下面是我使用的代码:

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);
}

如果少了什么,请告诉我好吗?或者是否有任何配置应该应用于使其工作?

Sitecore知识库上有一篇与此相关的文章,指出命中得分乘以0,因此所有结果都有相同的得分。

这篇文章与Lucene有关,但我相信它也与Solr有关。

解析

  1. 在Sitecore导航到/sitecore/templates/System/Templates/Sections/Indexing部分。
  2. 为这个部分创建一个标准值项。
  3. 在上述"标准值"项的"Boost Value"字段中输入值1。
  4. 保存、发布和重新索引

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

应该存在以下内容以应用增强功能并相应地对项进行排序:

  • 搜索应该有多个子句,否则检索到的项目将具有相同的分数值
  • 当搜索包含多个子句(谓词)时,它们将在得分值上具有相同的权重,除非应用boost方法". boost (10.0f)。
  • 子句之间的组合应该是"OR",否则返回的项必须匹配所有要检索的谓词,这意味着相同的分数值。

最新更新