We are currently working on a proof-of-concept for a client using Solr and have been able to configure all the features they want except the scoring.
Problem is that they want scores that make results fall in buckets:
- Bucket 1: exact match on category (score = 4)
- Bucket 2: exact match on name (score = 3)
- Bucket 3: partial match on category (score = 2)
- Bucket 4: partial match on name (score = 1)
First thing we did was develop a custom similarity class that would return the correct score depending on the field and an exact or partial match.
The only problem now is that when a document matches on both the category and name the scores are added together.
Example: searching for "restaurant" returns documents in the category restaurant that also have the word restaurant in their name and thus get a score of 5 (4+1) but they should only get 4.
I assume for this to work we would need to develop a custom Scorer class but we have no clue on how to incorporate this in Solr. Another option is to create a custom SortField implementation similar to the RandomSortField already present in Solr.
Maybe there is even a simpler solution that we don't know about.
All suggestions welcome!