Hi,

I'm using DisMaxRequestHandler and trying to transform a user-entered 
multi-term boolean query (e.g. foo bar baz).
I've configured DisMaxRH like so:

     <str name="qf">
        name^1.2                   <-- I removed the manu field from here -->
     </str>
     <str name="pf">
        manu^1.4
     </str>
     <int name="ps">0</int>  <-- try to require exact phrases -->

This gets my foo bar baz query rewritten to:

+(((name:foo^1.2)~0.01 (name:bar^1.2)~0.01 (name:baz^1.2)~0.01)~2) (manu:"foo 
bar baz"^1.4)~0.01

That's nice, but the problem here is that the manu:"foo bar baz" part here is 
optional (Occur.SHOULD).  What I'm like to do is have it required (Occur.MUST), 
and combine it with the first part of the query with an OR.
Something like this:

+((((name:foo^1.2)~0.01 (name:bar^1.2)~0.01 (name:baz^1.2)~0.01) | ((manu:”foo 
bar baz”)~0.01))~2)

I modified DisMaxRequestHandler to make the phrase part of the query required, 
but that only got me this:

+(((name:foo^1.2)~0.01 (name:bar^1.2)~0.01 (name:baz^1.2)~0.01)~2) +(manu:"foo 
bar baz"^1.4)~0.01

... and this is not quite what I want -- it is missing an OR before 
"_(manu:...." part.

Either my brain is frozen or it's impossible to get the above combination with 
OR ( that | ) between clauses.

Questions:
- Can DisMaxRH get me the above query just through its configuration in 
solrconfig.xml?
- Can anyone see how DisMaxRH can be modified to product the above REQUIRED OR 
REQUIRED type query?
- Does anyone else see a need for this?

My use case is this:

Think of the "name" field as less-important metadata field and "manu" as the 
more important and longer content field.  When a person enters foo bar baz, I 
want to avoid matches in the manu/content field caused by matches of individual 
terms (that is why I removed manu field from the "qf" DisMax param) --  I want 
a match in the manu/content field only if the exact phrase appears there (that 
is why I am using "pf" and "ps" of zero).
My goal is not to increase the relevance of docs with exact phrase matches, my 
goal is to completely avoid matches on individual terms in the manu field.

Thanks,

Otis 

--
Sematext -- http://sematext.com/ -- Lucene - Solr - Nutch


Reply via email to