问题
How can I boost the score for documents in which my query matches a particular field earlier. For example, searching for "super man" should give "super man returns" a higher score than "there is my super man". Is this possible?
回答1:
Check for options @ Ranking-based-on-term-position
回答2:
Solved it myself after reading a LOT about this online. What specifically helped me was a reply on nabble which goes like (I used dismax, so explaining that here):
- Create a separate field named say 'nameString' which stores the value as
"_START_ <actual data>"
- Change the search query to
"_START_ <actual query>"
- Add the new field
nameString
as one of the fields to look in in the query fields param (qf) - While searching use the parameter pf (phrase field) as the new field
nameString
with a phrase slop of 1 or 2 (lower values would mean stricter searching)
Your final query params will be something like:
q=_START_ <actual query>
defType=dismax
qf=name nameString /* look in name field as well as nameString field */
pf=nameString /* phrase field in nameString */
ps=2 /* phrase slop */
来源:https://stackoverflow.com/questions/12070016/solr-how-to-boost-score-for-early-matches