Hello,

I am using edismax parser with default qf = field1 field2 Now when I'm querying 
with q=hello world In debugging mode its showing that its making query like



parsedquery_toString: "+((((field1:hello) | (field2:hello)) ((field1:world) | 
(field2:world)))~2) ()",



but for other searches like q=hello universe



parsedquery_toString: "+(+((+field1:hello +field1:universe) | (+field2:hello 
+field2:universe)))"



The first is our expected behavior, this is how the big majority of queries 
works there are only a few exceptions with the second parsed query. This second 
is more restrictive forcing to find both terms in one of the fields while the 
first finds documents where the first term is in one field and the second term 
in the other field. There is a difference in computing the score as well: SUM 
of MAX vs. MAX of SUM



There was no problem in 4.3.1 version, we experienced it first 3 years ago with 
8.4.1 (solrcloud) and now again with 9.0.0



I have found two workarounds:

1. using q=hello AND universe, however q.op=AND

2. using defType=dismax

With both solutions the first parsed query is used.



Our thoughts was that it's related to HunSpellFilter where one of the terms has 
synonyms (the parsed query looks different, contains the synonyms as well) but 
triggered for some of the words but not for not all having synonyms. Another 
examples where with matches in fields with a custom type instead of string. But 
there is no general rule. Most of the fields are of the form where By playing 
with qf values in queries excluding certain fields fixes the query execution 
plan, but there are nothing special with those fields and it's not the same 
field for different searches.



Could someone explain what triggers using the second parsed query sometimes? Is 
it a bug in Solr?



Thank you,

Imre Papuscan

Reply via email to