: 1.) How should I deal with repeating parameters? If I use multiple
: boost queries, it seems that only the last one listed is used... for
: example:
:
: ((_query_:"{!dismax qf=\"title^500 author^300 allfields\"
bq=\"format:Book^50\" bq=\"format:Journal^150\"}test"))
Hmmm... that's either a bug or a silly limitation in the local params
parsing -- I've file a Jira for it but i have no idea what the fix is (or
if it was intentional for some odd reason)
https://issues.apache.org/jira/browse/SOLR-2798
...if you are interested in dig into the code to see what the cause might
be and helping to work on a patch that would be awesome.
: 2.) What is the proper way to escape quotes? Since there are multiple
: nested layers of double quotes, things get ugly and it's easy to end up
: with syntax errors. I found that this syntax doesn't cause an error:
...
: ((_query_:"{!dismax qf=\"title^500 author^300 allfields\"
bq=\"format:\\\"Book\\\"^50\" bq=\"format:\\\"Journal\\\"^150\"}test"))
backslash escaping should work, but you need to keep in mind that both the
LocalParam syntax and most query parsers treat '"' and '\' as significant
characters, so you may have to escape them more times then you think
For instance, even w/o local params, if you wanted a bq that contained a
literal '"', you'd need to escape it for the lucene query parser...
bq=foo_s:inner\"quote OR foo_s:other
if you then wanted to use that bq as a quoted local param, you'd need to
escape both the '\' and the original '"' again ...
q={!dismax bq="foo_s:inner\\\"quote OR foo_s:other"}foo
...and if you then wanted to use that entire {!dismax ... } string inside
of a quoted expression using the "_query_" hook of the Lucene QParser
(which is what it looks like you are doig) you would need to escape *all*
of those '\' and '"' characters once more....
q=bob OR _query_:"{!dismax bq=\"foo_s:inner\\\\\\\"quote OR foo_s:other\"}foo"
...and it should work (it does for me)
But the other thing you can do to make your life a *lot* simpler is to
leverage the parameter derefrencing and put each logical query string into
it's own parameter...
q=bob OR _query_:"{!dismax bq=$myBq}foo"
& myBq=foo_s:inner\"quote OR foo_s:other
...or really make youre life easy...
qq=foo
& q=bob OR _query_:"{!dismax bq=$myBq v=$qq}"
& myBq=foo_s:inner\"quote OR foo_s:other
-Hoss