How to make solr synonyms work

mlissner picture mlissner · Jan 14, 2012 · Viewed 34.7k times · Source

I'm trying to set up some basic synonyms in Solr. The one I've been working on is:

us, usa, united states

My understanding is that adding that to the synonym file will allow users to search for US, and get back documents containing usa or united states. Ditto for if a user puts in usa or united states.

Unfortunately, with this in place, when I do a search, I get the results for items that contain all three of the words - it's doing an AND of the synonyms rather than an OR.

If I turn on debugging, this is indeed what I see (plus some stemming):

(+DisjunctionMaxQuery(((westCite:us westCite:usa westCite:unit) | (text:us text:usa text:unit) | (docketNumber:us docketNumber:usa docketNumber:unit) | ((status:us status:usa status:unit)^1.25) | (court:us court:usa court:unit) | (lexisCite:us lexisCite:usa lexisCite:unit) | ((caseNumber:us caseNumber:usa caseNumber:unit)^1.25) | ((caseName:us caseName:usa caseName:unit)^1.5))))/no_coord

Am I doing something wrong to cause this? My defaultOperator is set to AND, but I'd expect the synonym filter to understand that.

Answer

rfeak picture rfeak · Jan 14, 2012

Try using the SynonymFilterFactory during indexing only, not during querying.

The documentation suggests this as well: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory