Mohammed Syam
Mohammed Syam

Reputation: 525

Sitecore Solr Search result items matching count

I am using Sitecore Solr search for searching using a keyword string, Is there a way to know the number of matches for each of the returned result items?.

The following is the code I am using:

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;
}

Upvotes: 0

Views: 679

Answers (2)

Mohammed Syam
Mohammed Syam

Reputation: 525

I solved this by adding boosting values to each predicate then the for each result item I got the score and divide it by .59 which in my case the maximum value that occurs when all predicates staesfied; The code in details can be found on the following blog post:

http://sitecoreinfo.blogspot.com/2015/10/sitecore-solr-search-result-items.html

Upvotes: 0

Marek Musielak
Marek Musielak

Reputation: 27142

From what I know, you can not get the number of matches for every result item based on the keyword used for search. What you can get, is a score value from Solr.

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

This is the value for the whole query, so it includes all predicates like language, not Standard Values and keywords in your case.

Remember, that this value can be different if you use Solr and if you use Lucene - this is dependent on the internal calculations.

Upvotes: 1

Related Questions