List Info

Thread: DisMax and REQUIRED OR REQUIRED query rewrite




DisMax and REQUIRED OR REQUIRED query rewrite
country flaguser name
United States
2007-10-24 16:16:25
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



[1]

about | contact  Other archives ( Real Estate discussion Medical topics )