Hi,

I run solr 8.4.1 and I issue the following query on edismax parser:
*defType=edismax&q=Title:(word1 for word2) &pf=Title&q.op=AND*

The parsed query edismax comes out with is the following:
+(
     +(
            +(+Title:word1 +Title_en:word2)))
(+(Title:\"for word2\"))

Firstly, I expected the strange multiple MUST operators since I have read
they are added when using AND as a default op. Also, in the first main
clause the *for *term is missing correctly, since I have a stopword
filtering in my analysis chain.
 However, what puzzles me is the fact that pf is skipping the first word of
my query. This won't happen if I was to add spaces after the opening and
before the closing parenthesis like that *Title:( word1 for word2 )*.

I took a look at the code and found why it did this (it seems that pf
ignores the first part (*(word1*) because it ignores clauses assigned to
fields, inside
org.apache.solr.search.ExtendedDismaxQParser#addPhraseFieldQueries and the
first part has Title as its field but the others do not), but I cannot
really understand the reasoning behind it. Is this to be expected or is
this a bug?

I know that I could use the qf parameter to target the field directly, but
the above query could be extended to something like Title:(word1 for word2)
OR Abstract:(word3) which I do not know how to express it via qf. Also I
expected such syntax to work as an alternative in any case.

Thanks,
Thomas

Reply via email to