: I attach a junit test which shows strange behaviour of the inOrder
: parameter on the SpanNearQuery constructor, using Lucene 2.9.4.
: 
: My understanding of this parameter is that true forces the order and
: false doesn't care about the order. 
: 
: Using true always works. However using false works fine when the terms
: in the query are distinct, but if they are equivalent, e.g. searching
: for "john john", I do not get the expected results. The workaround seems
: to be to always use true for queries with repeated terms.

I don't think the situation of "overlapping spans" has changed much since 
this thread...

http://search.lucidimagination.com/search/document/ee23395e5a93c525/non_overlapping_span_queries#868b3a3ec6431afc

the crux of hte issue (as i recall) is that there is really no conecptual 
reason to why a query for "'john' near 'john', in any order, with slop of 
Z" shouldn't match a doc that contains only one instance of "john" ... the 
first SpanTermQuery says "i found a match at position X" the second 
SpanTermQuery says "i found a match at position Y" and the SpanNearQuery 
says "the differnece between X and Y is less then Z" therefore i have a 
match.  (The SpanNearQuery can't fail just because X and Y are the same -- 
they might be two distinct term instances, with differnet payloads 
perhaps, that just happen to have the same position).

However: if true==inOrder case works because the SpanNearQuery enforces 
that  "X must be less then Y" so the same term can't ever match twice.



-Hoss

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to