So I'm trying to wrap my head around nested querries. Also that thing that isn't a nested query, but is similar, which I think is called "LocalParams syntax", like:

&q={!dismax qf=$something}cat dog

(All my examples are not URL-encoded for clarity, of course they'd have to be before sending to solr).

I've been referring to both:
http://wiki.apache.org/solr/SolrQuerySyntax
http://www.lucidimagination.com/blog/2009/03/31/nested-queries-in-solr/

Let's start with that not-nested query example. Can you in fact use it as above, to force dismax handling of the 'q' even if the qt or request handler default is something else? The documentation is confusing: "In standard Solr search handlers, the default type of the main query only may be specified via the defType parameter. The default type of all other query parameters will remain "lucene <http://wiki.apache.org/solr/SolrQuerySyntax#lucene>"."

I _think_ it's trying to say that I _can_, even in a standard search handler, force dismax with {!dismax}, I just can't change the type of _other_ query parameters -- rather than saying that I _can't_ use {!dismax} to force dismax type of 'q' in a "standard search handler". Yes?

Next, when we get to dismax---can I embed parameter value literals in there, and how?

q={!dismax qf="field^2 field2^4"} some query

With quotes like that? What if a parameter value literal itself has a quote mark in it, is there a way to escape it? (Say, can I embed an fq in there whose value itself needs quotes?)

Will parameters supplied in LocalParams like that always "override" something supplied in a straight query parameter?

&qf=somefield&q={!dismax qf=otherfield} cat dog => I'll get "otherfield" and not "somefield" ?

Can you use the LocalParams _without_ a !defType, to just supply parameters but take the default defType for the request handler? &q={qf=somefield} cat dog

And now we move into the nested querries -- for the simplest case nested query, is it in fact identical to using LocalParams without a nested query?

&q={!dismax qf=something} cat dog

===?

&q=_query_:"{!dismax qf=somefield} cat dog"

Are those equivelent? In nested querries like that, the issue of quote escaping becomes even more confusing, can I put a literal in there, and... how?

&q=_query_:"{!dismax qf="somefield^1 otherfield^2"}" ==> obviously won't work, the quotes are interfering with each other.

Phew, that's a lot of questions, but probably just a start, heh. I'm trying to wrap my head around the complete possibilities of LocalParams and nested querries, to figure out if I can use them to do the kind of complicated thing I'm trying to do. I guess I could try to test all these things out and figure out the answer, and probably will proceed to do that if nobody else has any other advice, but I figured it didn't hurt to ask, and some of these things will be hard to guess on my own (like the quote escaping issue). If I figure some stuff out, is there any good community place (wiki somewhere?) for me to document this stuff for others?

Thanks for any advice,

Jonathan

Reply via email to