I'm looking at SpanQueries as I work on new test cases for LUCENE-557, and
I'm confused by the implimentation of SpanFirstQuery.getSpans().

In the Anonymous Spans instance returned, start() and end() are allways
the start() and end() of the inner SpanQuery for the current doc --
shouldn't the start() be "0" indicating that the span starts at the
begining of the document?

Because of the current implimentation, there doesn't seem to be any way to
use SpanNot with SpanFirst to ensure that a given SpanQuery X allways
occurs in the first N positions, and that SpanQuery Z does not appear
before it.

In other words, this...
   int N = ...
   SpanQuery X =...;
   SpanQuery Z =...;
   SpanQuery first = new SpanFirstQuery(X,N);
   SpanQuery q = new SpanNotQuery(first, Z);

...seems to be functionally equivilent to...
   int N = ...
   SpanQuery X =...;
   //SpanQuery Z =...;
   SpanQuery first = new SpanFirstQuery(X,N);
   SpanQuery q = first;

...is that how it's suppose to work, or am i missunderstanding something?

Here's a small addition to "TestBasics" which shows how i was
expecting things to work...

  public void testSpanNotFirst() throws Exception {
    SpanTermQuery term40 = new SpanTermQuery(new Term("field", "forty"));
    SpanFirstQuery first = new SpanFirstQuery(term40, 5);
    SpanTermQuery hun = new SpanTermQuery(new Term("field", "hundred"));
    SpanNotQuery not = new SpanNotQuery(first, hun);

    checkHits(not, new int[]{40,41,42,43,44,45,46,47,48,49});

  }


...but the results contain every number with a 4 in the tens digit



-Hoss


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to