: Date: Tue, 16 Jun 2009 21:26:37 +
: From: siping liu
: Subject: DisMaxRequestHandler usage
: q=(field1:hello OR field2:hello) AND (field3:world)
:
: Can I use dismax handler for this (applying the same search term on
: field1 and field2, but keep field3 with something separate)? If it can
: be done, what's the advantage of doing it this way over using the
: standard query?
The point of dismax is to make your syntax simpler, in exchange for more
configuration. you can't produce that exact query using dismax, but lets
change your orriginal query slightly first...
fq=field3:world & q=(field1:hello OR field2:hello)
...the set of documents returned will be the same as your query, but the
scores will only be based on the word "hello" against field1 and field2 --
the "field3:world" clause will only be used to filter (restrict)
which documents are allowed.
Assuming that change regarding field3:world is okay with you, then the
main reason you might want to use dismax for a query like this is that the
same query can be expressed like this...
fq=field3:world & qf=field1 field2 & q=hello
...now you've moved the "hello" part into it's own param that can come
from your users, while the "field1 field2" part can come from somewhere in
your code, and users never have to type it, or even know it's there. you
can even default it in the solrconfig.xml, and change it all you want
without them ever knowing about it.
-Hoss