On Sep 14, 2005, at 7:39 PM, Martin Haye wrote:
I had to make changes like this to get my own SpanRangeQuery and
SpanWildcardQuery to work properly in the larger context. Adding
the rewrite
methods wasn't too hard.
I just added an overridden rewrite method to SpanNearQuery as below
and it worked great. I'd be happy to do similar to all SpanQuery
subclasses that accept SpanQuery's in their constructors. Any
objections?
Thanks,
Erik
public Query rewrite(IndexReader reader) throws IOException {
SpanNearQuery clone = null;
for (int i = 0 ; i < clauses.size(); i++) {
SpanQuery c = (SpanQuery)clauses.get(i);
SpanQuery query = (SpanQuery) c.rewrite(reader);
if (query != c) { // clause rewrote: must
clone
if (clone == null)
clone = (SpanNearQuery) this.clone();
clone.clauses.set(i,query);
}
}
if (clone != null) {
return clone; // some clauses rewrote
} else {
return this; // no clauses rewrote
}
}
--Martin
On 9/14/05, Erik Hatcher <[EMAIL PROTECTED]> wrote:
I'm implementing a custom SpanQuery subclass that expands into
multiple terms (sort of like WildcardQuery). I've subclassed
SpanQuery and overridden the rewrite method to rewrite itself into a
SpanOrQuery. This works fine by itself as a standalone query.
However, when my custom SpanQuery subclass is nested within a
SpanNearQuery it is not rewritten (as SpanQuery and all the built-in
subclasses) defer to Query.rewrite.
What are my options in this regard?
Should the Span*Query's that aggregate other SpanQuery's
(SpanOrQuery, SpanNearQuery) do something like BooleanQuery.rewrite
()? It seems like it should just to be on the safe side and allow
rewriting SpanQuery's.
Thoughts?
Thanks,
Erik
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]