: I tried the following, edismax to search against the description field and
: lucene parser to search against the keywords field, but it does not work.
: What is wrong?
:
: host:port/solr/v9/select?q={!edismax qf=description}white roses OR
: {!lucene}keywords:(white AND roses)&debug=true
The {!...} local param syntax used at the begining of the q param causes
it to specify the parser used for the entire string -- so the `edismax`
parser is given the entire string...
white roses OR {!lucene}keywords:(white AND roses)
...as it's input, and `edismax` does *NOT* support embeeded parsers.
In order for your (implicit `defType=lucene` parser to see that input and
recognize that you want itto consist of SHOULD clauses, one parsed by the
`edismax` parser, and one my the `lucene` parser you need to use parens --
not just for grouping, but so that the first chars of the query string
aren't `{!...` overriding the `defType` parser.
You also need to use local params to specify the `edismax` query input as
the `v` param, because otherwise it's up to the `defType=lucene` parser to
decide when the prefix based input to the `edismax` ends.
So this gets you an embedded edismax parser...
q=({!edismax qf=description}white roses OR keywords:(white AND roses))
...but `white` is the query string the `defType=lucene` parser gives to
the `edismax` parser.
This is what you seem to want...
q=({!edismax qf=description v='white roses'} OR keywords:(white AND roses))
Which can also be broken out as...
q=({!edismax qf=description v=$user_input} OR keywords:(white AND roses))
user_input=white roses
(which can be important if/when you have to worrk about quoting in your
user input.
-Hoss
http://www.lucidworks.com/