From 45c5ec4577160978024806454d835d0dafdb10d7 Mon Sep 17 00:00:00 2001
From: Doug Cutting A span is a The following span query operators are implemented:
+
+<doc,startPosition,endPosition>
tuple.
+
+
+
+In all cases, output spans are minimally inclusive. In other words, a
+span formed by matching a span in x and y starts at the lesser of the
+two starts and ends at the greater of the two ends.
+q
whose end position is less than
+n
. This can be used to constrain matches to the first
+part of the document.
For example, a span query which matches "John Kerry" within ten +words of "George Bush" within the first 100 words of the document +could be constructed with: +
+SpanQuery john = new SpanTermQuery(new Term("content", "john")); +SpanQuery kerry = new SpanTermQuery(new Term("content", "kerry")); +SpanQuery george = new SpanTermQuery(new Term("content", "george")); +SpanQuery bush = new SpanTermQuery(new Term("content", "bush")); + +SpanQuery johnKerry = + new SpanNearQuery(new SpanQuery[] {john, kerry}, 0, true); + +SpanQuery georgeBush = + new SpanNearQuery(new SpanQuery[] {george, bush}, 0, true); + +SpanQuery johnKerryNearGeorgeBush = + new SpanNearQuery(new SpanQuery[] {johnKerry, georgeBush}, 10, false); + +SpanQuery johnKerryNearGeorgeBushAtStart = + new SpanFirstQuery(johnKerryNearGeorgeBush, 100); ++ +
Span queries may be freely intermixed with other Lucene queries. +So, for example, the above query can be restricted to documents which +also use the word "iraq" with: + +
+Query query = new BooleanQuery(); +query.add(johnKerryNearGeorgeBushAtStart, true, false); +query.add(new TermQuery("content", "iraq"), true, false); ++