I want to demote all documents that have inv=0(possible values from 0 to 1000) to the end of the result set. i have got other sorting options like name desc also as part of the
Sort will override the boost.
So, you either move your sort into boost by making that condition map into boost values.
Or you move your boost condition into sort, using query() syntax. This was one of the gems from the Lucene/Solr Revolution 2016 presentation by hoss (click start presentation):
qq = Harry
q = +{!edismax v=$qq}
qf = title actor writer director keywords
sort = query($title_sort,0) desc, title asc
title_sort = {!field f=title v=$qq}
Default sorting criteria in Solr is score desc
, where score
is a virtual field and it actually represents the document's score.
Once one is passing &sort=name asc
it will override default sorting.
Possible solution here might be something like this: &sort=score desc, name asc
. Which literally means: please sort by score
first and for documents with equal score please make a tie-break by name
ascending.
It should work as long as you will have equal scores for doc1, doc2, doc5, doc6.
If it is not the case - then check out this Solr Wiki link for more details how to penalize docs with inv:0
.