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 相关。
解决
- 在 Sitecore 中导航到
/sitecore/templates/System/Templates/Sections/Indexing
节。
- 为此部分创建一个标准值项。
- 在上述标准值项的
Boost Value
字段中输入值 1。
- 保存、发布并重新编制索引
由于您的实例是6.6的升级版本,在ContentSearch存在之前,标准值不存在,也不会在升级脚本中创建。
应存在以下内容以应用增强功能并相应地对项目进行排序:
- 搜索应该包含多个子句,否则检索到的项目将具有相同的分值
- 当搜索包含多个子句(谓词)时,除非应用增强方法 ".Boost(10.0f).
,否则它们在分值上的权重相同
- 子句之间的组合应该是"OR",否则返回的项目必须匹配所有要检索的谓词,这意味着相同的分值。
我正在尝试获取每个返回结果项的分值,但问题是所有项目都返回了相同的分值。我正在使用从 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 相关。
解决
- 在 Sitecore 中导航到
/sitecore/templates/System/Templates/Sections/Indexing
节。 - 为此部分创建一个标准值项。
- 在上述标准值项的
Boost Value
字段中输入值 1。 - 保存、发布并重新编制索引
由于您的实例是6.6的升级版本,在ContentSearch存在之前,标准值不存在,也不会在升级脚本中创建。
应存在以下内容以应用增强功能并相应地对项目进行排序:
- 搜索应该包含多个子句,否则检索到的项目将具有相同的分值
- 当搜索包含多个子句(谓词)时,除非应用增强方法 ".Boost(10.0f). ,否则它们在分值上的权重相同
- 子句之间的组合应该是"OR",否则返回的项目必须匹配所有要检索的谓词,这意味着相同的分值。