4

How are boosted fields handled in Sitecore ContentSearch when there are multiple indexed fields with different boosting values? Is there some formula to calculate the result ordering and is this configurable in some way?

For example, if I have the following template fields indexed as follows:

|     Field Name      | Boost Value |
|---------------------|-------------|
| Product Name        |           4 |
| Product Description |           2 |

Then given the following items exist and I search for "VW hatchback car", is my assumption about the boosting (and hence sort order) of each item correct?

|   Product Name    |                        Product Description                        |   Boost Sum        |
|-------------------|-------------------------------------------------------------------|--------------------|
| VW Golf Hatchback | Hatchback car with seats for 5 adults. Good car for city driving. | 4 + 4 + 2 + 2 = 12 |
| VW Passat Estate  | Large estate car with seats for 5 adults and a large boot.        | 4 + 2 = 6          |

Would a repeated word in a field add to the "boosting total" for that item?

I'm using Sitecore 8.2 and Azure Search, but I'm assuming those are not of great relevance for this question.

2 Answers 2

4

I realize you are using Azure Search so my answer may not be directly relevant to this, but having more familiarity with Solr I thought I would take a look:

https://wiki.apache.org/solr/SolrRelevancyFAQ#How_are_documents_scored

By default, a "TF-IDF" based Scoring Model is used. The basic scoring factors:

  • tf stands for term frequency - the more times a search term appears in a document, the higher the score
  • idf stands for inverse document frequency - matches on rarer terms count more than matches on common terms
  • coord is the coordination factor - if there are multiple terms in a query, the more terms that match, the higher the score
  • lengthNorm - matches on a smaller field score higher than matches on a larger field
  • index-time boost - if a boost was specified for a document at index time, scores for searches that match that document will be boosted.
  • query clause boost - a user may explicitly boost the contribution of one part of a query over another.

From other documentation, it looks like Azure Search has a concept of Scoring Profiles but if one is not specifically defined, it falls back to the TF-IDF methodology (similar to Solr).

So from the above, I would assume that the the more occurences of a given word (or phrase depending on the field indexType, whether its TOKENIZED or not and the type of Analyzer) would affect the overall score of a Hit, coupled with that fields overall boost value, would result in the overall Relevancy (or results, ordered by overall Score factoring in the rarity of the word in all documents/hits).

As far as "configurability" of how this relevancy or sorting by scoring is determined, I assume it would be some combination of boosting particular fields and the overall setup of the search mechanism (in my case Solr, in your case Azure Search), the type of Analyzers used, and even down to implementing your own Query classes in Solr. In Azure Search it looks to be more configurable thru the use of Scoring Profiles.

0

Since Sitecore ContentSearch is an abstraction of Lucene/Solr/AzureSearch I tried searching without reference to Sitecore. The lucene documentation on Scoring mentions the Similarity class which I believe is where the logic of scoring/boosting lies. I did not attempt to fully understand that (yet) as it is pretty complex, but essentially my assumptions as described in the question are oversimplified.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.