: q=ipod&bq={!dismax qf=userId^0.5 v=$qq bq=}&qq=12345&qt=dismax&debugQuery=on
: 
: I try to debug the above query, it turned out to be as:
: +DisjunctionMaxQuery((content:ipod | title:ipod^4.0)~0.01) ()
: +DisjunctionMaxQuery((userId:12345^0.5)~0.01)

...hmmm, i'm not sure why that's happening, but it certianly seems like a 
bug -- i ust have no idea what that bug is.  

the inner dismax parser should definitely be producing a query where the 
DisjunctionMaxQuery for "12345" is "mandatory" but that mandatory clause 
should be wrapped inside of another boolean query which should be added to 
the outermost query as an "optional" clause.

somewhere that BooleanQuery produced by the inner dismax parser is getting 
thrown away ... hmmm, actually that this is a neccessary behavior of
DismaxQParser for some cases (that it sheds it's own outermost 
BooleanQuery when not needed), but in this case it's screwing you because 
it doesn't realize you really do need it.

does this owrk better? ...

q=ipod&bq={!dismax qf=userId^0.5 v=$qq 
bq=*:*^0}&qq=12345&qt=dismax&debugQuery=on

...it's kind of kludgy, but it should garuntee you that wrapping 
BooleanQuerry is preserved.



-Hoss

Reply via email to