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 <erik@ehatchersolutions.com> 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: java-dev-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-dev-help@lucene.apache.org
>>
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org
|