2015-09-17 64 views
0

我正在使用Sitecore Solr搜索使用關鍵字字符串進行搜索,有沒有辦法知道每個返回結果項目的匹配數量?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; 
} 

回答

1

據我所知,您可以根據使用的搜索關鍵字不會得到匹配的數目爲每個結果項目。你可以得到的是來自Solr的得分

var hits = query.GetResults().Hits; 
foreach (var hit in hits) 
{ 
    var score = hit.Score; 
} 

這是整個查詢的價值,所以包括像language,你的情況not Standard Valueskeywords所有謂詞。

請記住,如果您使用Solr並且您使用Lucene,則此值可能會有所不同,這取決於內部計算。

+0

我以前嘗試這樣做,得分值將是所有的結果項相同的,如果關鍵字謂詞匹配,我需要像遞增在當前項目上找到的每個比賽的得分值? –