0
votes

Perhaps someone can enlighten me on how Solr matches terms. So I have a string attribute named assignedBy, and I do a query against this attribute with the value "Aaron Mason" (no quotes). Solr returns more matches than I anticipated because the term "Mason" also matches documents whose other fields contain the word "Mason" in it. By turning on debugging feature (from Solr admin), I see Solr breaks down the query into two attribute queries - "aaron" for assignedBy and "mason" for the catch-all text (see below). Is this the correct behavior? How do I ensure that it only finds matches against the attribute I specify? Thanks.

"debug":{ "rawquerystring":"assignedBy:Aaron Mason", "querystring":"assignedBy:Aaron Mason", "parsedquery":"assignedBy:aaron _text_:mason", "parsedquery_toString":"assignedBy:aaron _text_:mason",

1

1 Answers

2
votes

yes you are correct. when you q=assignedBy:Aaron Mason after parsing the query, based on you query tokenizers in schema file, it looks like assignedBy:aaron and _text_:mason.

if you don't specify field name queryterm is searched in default field (which is set in solrconfig.xml file) you can look for <str name="df">text</str> under /select handler. in your case it might be _text_.

So, Solr search for its index and retrieve combined results of all documents which has field assignedBy with term "Aaron" and all documents which has field _text_ with term "mason".

you might have used copyfield to copy some field values to text field. check for it.

You can use dismax/edismax where you can specify in which field all your terms to search for example:

q=Aaron Mason&wt=json&debugQuery=on&defType=dismax&qf=assignedBy

This only finds matches against the field "assignedBy" specified in qf