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]

Reply via email to