Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Solr rule based boost

Tags:

java

solr

solrj

I am using Solr-5.0.0. I am searching on a field product_name. I need to add some rules to get relevant results.

  1. If I search for a word, if exact match exists , it should come first. Ex: if I search for laptop ,it should return exact product_name with laptop first.

  2. If I search for more than one word , it should obey rule 1. along with least word length distanced names come first. Ex: if I search dell laptop, it should return Dell laptop first than dell inspiron laptop.

  3. If I search for words it should not return results contains with or without words. Ex: in search laptop bag , it should not give dell laptop with bag or dell laptop without bag results first.

How can I achieve these rules based search relevant results at query time?

My application is in java, so Java answer is appreciated.

like image 557
Juhan Avatar asked Jun 03 '15 13:06

Juhan


People also ask

What is boost in Solr?

The “boost” parameter is very similar to the “bf” parameter, but instead of adding its result to the final score, it will multiply it. This is only available in the “Extended Dismax Query Parser” or the “Lucid Query Parser”.

What is QF in Solr?

qf. Query Fields: specifies the fields in the index on which to perform the query. If absent, defaults to df . mm. Minimum "Should" Match: specifies a minimum number of clauses that must match in a query.


1 Answers

To begin with, you should use the dismax or edismax query parser instead of the default (lucene).

Then you can improve relevancy using different parameters :

  1. : Use qf to boost your product_name field.
  2. : Use pf to boost your product_name field where all of the terms in the q parameter appear in close proximity.
  3. : Use bq to boost documents where the words with or without don't appear. See here. For example : bq=(*:* -with -without)^999
like image 135
Romain Meresse Avatar answered Nov 24 '22 01:11

Romain Meresse