我使用Sitecore Solr搜索使用关键字字符串进行搜索,是否有办法知道每个返回结果项的匹配数?
以下是我正在使用的代码:
using (var context = Index.CreateSearchContext())
{
List<Item> ResultList = new List<Item>();
var contentPredicate = PredicateBuilder.True<customSearchResultItem>();
contentPredicate = contentPredicate.And(p => p.Content.Contains(SearchKey));
contentPredicate = contentPredicate.And(p => p.Name != "__Standard Values");
var languagePredicate = PredicateBuilder.True<customSearchResultItem>();
languagePredicate = languagePredicate.And(p => p.Language == Context.Language.Name);
var CombinPredicates = PredicateBuilder.True<customSearchResultItem>();
CombinPredicates = CombinPredicates.And(languagePredicate);
CombinPredicates = CombinPredicates.And(contentPredicate);
// execute the search
IQueryable<customSearchResultItem> query = context.GetQueryable<customSearchResultItem>().Where(CombinPredicates);
var hits = query.GetResults().Hits;
}
答案 0 :(得分:1)
据我所知,您无法根据用于搜索的关键字获取每个结果项的匹配数。您可以获得的是Solr的得分值。
var hits = query.GetResults().Hits;
foreach (var hit in hits)
{
var score = hit.Score;
}
这是整个查询的值,因此它包含所有谓词,例如language
,not Standard Values
和keywords
。
请记住,如果您使用Solr并且使用Lucene,则此值可能会有所不同 - 这取决于内部计算。
答案 1 :(得分:0)
我通过向每个谓词添加提升值来解决这个问题,然后对每个结果项我得到得分并将其除以.59,在我的情况下,当所有谓词都被收集时发生的最大值;详细代码可以在以下博客文章中找到:
http://sitecoreinfo.blogspot.com/2015/10/sitecore-solr-search-result-items.html