Sitecore Solr 搜索得分值

Sitecore Solr Search Score Value

我正在尝试获取每个返回结果项的分值,但问题是所有项目都返回了相同的分值。我正在使用从 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 知识库上有一个与此相关的 post 指出命中的分数乘以 0,因此所有结果都具有相同的分数。

post 与 Lucene 相关,但我相信它也与 Solr 相关。

解决

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

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

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

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