: 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