I'm using Solr to search through event documents. Each event has a title and a location as well as a few other fields. The configuration is this:
t_name^4 t_speakers^3 t_location^2 t_openTo^1 t_sponsors^1
so a title match is given priority over a location match. Most of the time this works. However, matching results with long titles often get returned after results with exact location matches. For example, if I search for Boston, my first result is "{Title: MBA Tour}, {Location: Boston}" and my second result is "{Title: Impact of Contracting on Occupational Injuries and Fatalities in Underground Coal Mining Marric Buessing, Boston University}, {Location: null}". I want to get the result with Boston in the title first.
I am pretty sure the reason MBA Tour comes back first is because of fieldNorm, the negative boost Solr gives to fields that contain a lot of terms. Even though Location has a lower boost then Title, the exact match of Location = Boston ends up with a higher score than Title = {super long title + Boston}.
Is there a way to negate or remove the fieldNorm negative boost in my Solr config, or in the querystring I pass to Solr? Or is there any other way to get the Title result first without just changing the boost on Title? Increasing the boost may work for some results, but I have no guarantee on any limit on title length, so the boost on Title might now always be enough to negate fieldNorm.