After consulting LIA, I find the following sentence at the end of 5.4.2
"Finding spans at the beinning of a field" ...
The resulting span matches are the same as the orriginal SpanQuery
spans, ...
...which indicates that it is working as documented -- but it remains to
be seen if that's what was intended or not.
In any case, it begs the question, how would someone go about building a
SpanQuery where the intent is:
SpanQuery X must be in the first N positions
AND
SpanQuery Z must not come before SpanQuery X
The best i can figure would be something like...
SpanQuery q = new SpanNotQuery(
new SpanFirstQuery(X, N),
new SpanFirstQuery(new SpanNearQuery(new SpanQuery[]{Z, X.clone()},
N-1, true),
N-1);
...but this doesn't seem to work at the moment because of LUCENE-560.
Even if it did work, it seems kind of kludgy, anyone have a better
suggestion?
: 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]