Sitecore Solr搜索分数值

时间:2015-07-13 13:41:36

标签: solr sitecore sitecore7

我正在尝试获取每个返回结果项的分数值,但问题是所有项都返回了相同的分数值。我正在使用从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);
}

请问您是否遗漏了什么?或者是否有任何配置应该应用于这项工作?

2 个答案:

答案 0 :(得分:2)

Sitecore知识库中有一篇与此相关的帖子,指出点击的得分乘以0,因此所有结果的得分都相同。

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

解决问题

  1. 在Sitecore中导航到 /sitecore/templates/System/Templates/Sections/Indexing部分。
  2. 为此部分创建标准值项目。
  3. 在上述标准值项目的Boost Value字段中输入值。
  4. 保存,发布和重新编制索引
  5. 由于您的实例是升级版本6.6,在ContentSearch存在之前,标准值在升级脚本中不存在或创建。

答案 1 :(得分:0)

应该存在以下内容来应用提升功能并相应地对项目进行排序:

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