Got it.
Thanks so much.
Brendan
On Mar 14, 2008, at 8:11 AM, Erik Hatcher wrote:
On Mar 13, 2008, at 3:06 AM, Brendan Grainger wrote:
Just started using the Dismax handler and it looks very promising.
However I'm a little confused about this query. Could somebody
please explain why I'm getting a phrase query here?
You're not actually getting a PhraseQuery. The
DisjunctionMaxQuery#toString() puts a "~" in for the tie breaker.
In general, a Query#toString is lossy/confusing - but better than
nothing.
public String toString(String field) {
StringBuffer buffer = new StringBuffer();
buffer.append("(");
for (int i = 0 ; i < disjuncts.size(); i++) {
Query subquery = (Query) disjuncts.get(i);
if (subquery instanceof BooleanQuery) { // wrap sub-bools in
parens
buffer.append("(");
buffer.append(subquery.toString(field));
buffer.append(")");
}
else buffer.append(subquery.toString(field));
if (i != disjuncts.size()-1) buffer.append(" | ");
}
buffer.append(")");
if (tieBreakerMultiplier != 0.0f) {
buffer.append("~");
buffer.append(tieBreakerMultiplier);
}
if (getBoost() != 1.0) {
buffer.append("^");
buffer.append(getBoost());
}
return buffer.toString();
}
+(((title_t:mass) (title_t:air) (title_t:flow))~3) ()',
And is that extra () indicative of something? I have some stuff
going on with synonyms and I'm wondering if the position of the
tokens is off and causing this.
That extra clause is Solr's dismax code putting in an empty clause -
I think that is the boosting query(?).
Erik
The relevant output from debugQuery is below:
'rawquerystring'=>'mass air flow',
'querystring'=>'mass air flow',
'parsedquery'=>'+((DisjunctionMaxQuery((title_t:mass))
DisjunctionMaxQuery((title_t:air))
DisjunctionMaxQuery((title_t:flow)))~3) ()',
'parsedquery_toString'=>'+(((title_t:mass) (title_t:air)
(title_t:flow))~3) ()',
Thanks!