You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2013/02/12 22:47:53 UTC

svn commit: r1445403 - in /lucene/dev/branches/LUCENE-2878/lucene/core/src: java/org/apache/lucene/search/ java/org/apache/lucene/search/intervals/ test/org/apache/lucene/search/intervals/

Author: romseygeek
Date: Tue Feb 12 21:47:53 2013
New Revision: 1445403

URL: http://svn.apache.org/r1445403
Log:
Add PositionFilteredScorer and OrderedNearQuery

Added:
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionFilteredScorer.java   (with props)
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ScorerFilterQuery.java   (with props)
Modified:
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionQueue.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/Scorer.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/Interval.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/OrderedNearQuery.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBasicIntervals.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBrouwerianQuery.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java
    lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java

Added: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionFilteredScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionFilteredScorer.java?rev=1445403&view=auto
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionFilteredScorer.java (added)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionFilteredScorer.java Tue Feb 12 21:47:53 2013
@@ -0,0 +1,126 @@
+package org.apache.lucene.search;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.search.intervals.Interval;
+
+import java.io.IOException;
+
+public abstract class PositionFilteredScorer extends Scorer {
+
+  protected final Scorer[] subScorers;
+  protected final Scorer child;
+  protected final Interval current = new Interval();
+  protected int matchDistance;
+
+  private boolean buffered;
+
+  public PositionFilteredScorer(Scorer filteredScorer) {
+    super(filteredScorer.getWeight());
+    child = filteredScorer;
+    subScorers = new Scorer[filteredScorer.getChildren().size()];
+    int i = 0;
+    for (ChildScorer subScorer : filteredScorer.getChildren()) {
+      subScorers[i++] = subScorer.child;
+    }
+  }
+
+  @Override
+  public float score() throws IOException {
+    return child.score();
+  }
+
+  @Override
+  public int docID() {
+    return child.docID();
+  }
+
+  @Override
+  public int nextDoc() throws IOException {
+    while (child.nextDoc() != NO_MORE_DOCS) {
+      reset(child.docID());
+      if (nextPosition() != NO_MORE_POSITIONS) {
+        buffered = true;
+        return child.docID();
+      }
+    }
+    return NO_MORE_DOCS;
+  }
+
+  @Override
+  public int advance(int target) throws IOException {
+    if (child.advance(target) == NO_MORE_DOCS)
+      return NO_MORE_DOCS;
+    do {
+      reset(child.docID());
+      if (nextPosition() != NO_MORE_POSITIONS) {
+        buffered = true;
+        return child.docID();
+      }
+    } while (child.nextDoc() != NO_MORE_DOCS);
+    return NO_MORE_DOCS;
+  }
+
+  @Override
+  public int nextPosition() throws IOException {
+    if (buffered) {
+      buffered = false;
+      return current.begin;
+    }
+    while (doNextPosition() != NO_MORE_POSITIONS) {
+      if (passesFilter()) {
+        return current.begin;
+      }
+    }
+    return NO_MORE_POSITIONS;
+  }
+
+  protected abstract int doNextPosition() throws IOException;
+
+  protected boolean passesFilter() {
+    return true;
+  }
+
+  protected abstract void reset(int doc) throws IOException;
+
+  public int getMatchDistance() {
+    return matchDistance;
+  }
+
+  @Override
+  public int startPosition() throws IOException {
+    return current.begin;
+  }
+
+  @Override
+  public int endPosition() throws IOException {
+    return current.end;
+  }
+
+  @Override
+  public int startOffset() throws IOException {
+    return current.offsetBegin;
+  }
+
+  @Override
+  public int endOffset() throws IOException {
+    return current.offsetEnd;
+  }
+
+  // nocommit Payloads - need to add these to Interval?
+}

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionQueue.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionQueue.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionQueue.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/PositionQueue.java Tue Feb 12 21:47:53 2013
@@ -35,7 +35,7 @@ public class PositionQueue extends Prior
     public int nextPosition() throws IOException {
       if (docsEnum.docID() == DocsEnum.NO_MORE_DOCS || docsEnum.docID() != docId
             || docsEnum.nextPosition() == DocsEnum.NO_MORE_POSITIONS)
-        interval.update(Interval.EXHAUSTED_INTERVAL);
+        interval.setMaximum();
       else
         interval.update(this.docsEnum);
       return interval.begin;

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java Tue Feb 12 21:47:53 2013
@@ -113,6 +113,31 @@ class ReqExclScorer extends Scorer {
   }
 
   @Override
+  public int nextPosition() throws IOException {
+    return reqScorer.nextPosition();
+  }
+
+  @Override
+  public int startPosition() throws IOException {
+    return reqScorer.startPosition();
+  }
+
+  @Override
+  public int endPosition() throws IOException {
+    return reqScorer.endPosition();
+  }
+
+  @Override
+  public int startOffset() throws IOException {
+    return reqScorer.startOffset();
+  }
+
+  @Override
+  public int endOffset() throws IOException {
+    return reqScorer.endOffset();
+  }
+
+  @Override
   public Collection<ChildScorer> getChildren() {
     return Collections.singleton(new ChildScorer(reqScorer, "FILTERED"));
   }

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/Scorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/Scorer.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/Scorer.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/Scorer.java Tue Feb 12 21:47:53 2013
@@ -87,7 +87,9 @@ public abstract class Scorer extends Doc
    *
    * @lucene.experimental
    */
-  public abstract IntervalIterator intervals(boolean collectIntervals) throws IOException;
+  public IntervalIterator intervals(boolean collectIntervals) throws IOException {
+    return null;
+  };
 
   /**
    * Get the IntervalIterators from a list of scorers

Added: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ScorerFilterQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ScorerFilterQuery.java?rev=1445403&view=auto
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ScorerFilterQuery.java (added)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ScorerFilterQuery.java Tue Feb 12 21:47:53 2013
@@ -0,0 +1,148 @@
+package org.apache.lucene.search;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.index.AtomicReaderContext;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermContext;
+import org.apache.lucene.search.similarities.Similarity;
+import org.apache.lucene.util.Bits;
+
+import java.io.IOException;
+import java.util.TreeSet;
+
+public class ScorerFilterQuery extends Query {
+
+  protected final Query innerQuery;
+  protected final ScorerFilterFactory scorerFilterFactory;
+
+  public ScorerFilterQuery(Query innerQuery, ScorerFilterFactory scorerFilterFactory) {
+    this.innerQuery = innerQuery;
+    this.scorerFilterFactory = scorerFilterFactory;
+  }
+
+  protected static BooleanQuery buildBooleanQuery(Query... queries) {
+    BooleanQuery bq = new BooleanQuery();
+    for (Query q : queries) {
+      bq.add(q, BooleanClause.Occur.MUST);
+    }
+    return bq;
+  }
+
+  @Override
+  public Query rewrite(IndexReader reader) throws IOException {
+    Query rewritten =  innerQuery.rewrite(reader);
+    if (rewritten != innerQuery) {
+      return new ScorerFilterQuery(rewritten, scorerFilterFactory);
+    }
+    return this;
+  }
+
+  @Override
+  public Weight createWeight(IndexSearcher searcher) throws IOException {
+    return new ScorerFilterWeight(innerQuery.createWeight(searcher), searcher);
+  }
+
+  @Override
+  public String toString(String field) {
+    return scorerFilterFactory.getName() + "[" + innerQuery.toString() + "]";
+  }
+
+  public class ScorerFilterWeight extends Weight {
+
+    private final Weight innerWeight;
+    private final Similarity similarity;
+    private final Similarity.SimWeight stats;
+
+    public ScorerFilterWeight(Weight innerWeight, IndexSearcher searcher) throws IOException {
+      this.innerWeight = innerWeight;
+      this.similarity = searcher.getSimilarity();
+      this.stats = getSimWeight(innerWeight.getQuery(), searcher);
+    }
+
+    private Similarity.SimWeight getSimWeight(Query query, IndexSearcher searcher)  throws IOException {
+      TreeSet<Term> terms = new TreeSet<Term>();
+      query.extractTerms(terms);
+      if (terms.size() == 0)
+        return null;
+      int i = 0;
+      TermStatistics[] termStats = new TermStatistics[terms.size()];
+      for (Term term : terms) {
+        TermContext state = TermContext.build(searcher.getTopReaderContext(), term, true);
+        termStats[i] = searcher.termStatistics(term, state);
+        i++;
+      }
+      final String field = terms.first().field(); // nocommit - should we be checking all filtered terms
+      // are on the same field?
+      return similarity.computeWeight(query.getBoost(), searcher.collectionStatistics(field), termStats);
+    }
+
+    @Override
+    public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
+      Scorer scorer = scorer(context, true, false, PostingFeatures.POSITIONS,
+          context.reader().getLiveDocs());
+      if (scorer != null) {
+        int newDoc = scorer.advance(doc);
+        if (newDoc == doc) {
+          float freq = scorer.freq();
+          Similarity.SloppySimScorer docScorer = similarity.sloppySimScorer(stats, context);
+          ComplexExplanation result = new ComplexExplanation();
+          result.setDescription("weight("+getQuery()+" in "+doc+") [" + similarity.getClass().getSimpleName() + "], result of:");
+          Explanation scoreExplanation = docScorer.explain(doc, new Explanation(freq, "phraseFreq=" + freq));
+          result.addDetail(scoreExplanation);
+          result.setValue(scoreExplanation.getValue());
+          result.setMatch(true);
+          return result;
+        }
+      }
+      return new ComplexExplanation(false, 0.0f,
+          "No matching term within position filter");
+    }
+
+    @Override
+    public Query getQuery() {
+      return ScorerFilterQuery.this;
+    }
+
+    @Override
+    public float getValueForNormalization() throws IOException {
+      return stats == null ? 1.0f : stats.getValueForNormalization();
+    }
+
+    @Override
+    public void normalize(float norm, float topLevelBoost) {
+      if (stats != null)
+        stats.normalize(norm, topLevelBoost);
+    }
+
+    @Override
+    public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder, boolean topScorer,
+                         PostingFeatures flags, Bits acceptDocs) throws IOException {
+      return scorerFilterFactory.scorer(innerWeight.scorer(context, scoreDocsInOrder, topScorer, flags, acceptDocs));
+    }
+  }
+
+  public static interface ScorerFilterFactory {
+
+    public Scorer scorer(Scorer filteredScorer);
+
+    public String getName();
+
+  }
+}

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/Interval.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/Interval.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/Interval.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/Interval.java Tue Feb 12 21:47:53 2013
@@ -40,10 +40,7 @@ public class Interval implements Cloneab
   /** An interval that will always compare as less than any other interval */
   public static final Interval INFINITE_INTERVAL = new Interval();
 
-  /** An interval that will always compare as more than any other interval */
-  public static final Interval EXHAUSTED_INTERVAL = new Interval(Integer.MAX_VALUE, Integer.MAX_VALUE, -1, -1);
-
-  /**
+   /**
    * Constructs a new Interval
    * @param begin the start position
    * @param end the end position

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/OrderedNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/OrderedNearQuery.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/OrderedNearQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/OrderedNearQuery.java Tue Feb 12 21:47:53 2013
@@ -17,9 +17,12 @@ package org.apache.lucene.search.interva
  * limitations under the License.
  */
 
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.PositionFilteredScorer;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Scorer;
+import org.apache.lucene.search.ScorerFilterQuery;
+
+import java.io.IOException;
 
 /**
  * A query that matches if a set of subqueries also match, and are within
@@ -35,17 +38,7 @@ import org.apache.lucene.search.Query;
  * @lucene.experimental
  */
 
-public class OrderedNearQuery extends IntervalFilterQuery {
-
-  /**
-   * Constructs an OrderedNearQuery
-   * @param slop the maximum distance between the subquery matches
-   * @param collectLeaves false if only the master interval should be collected
-   * @param subqueries the subqueries to match.
-   */
-  public OrderedNearQuery(int slop, boolean collectLeaves, Query... subqueries) {
-    super(buildBooleanQuery(subqueries), new WithinOrderedFilter(slop, collectLeaves));
-  }
+public class OrderedNearQuery extends ScorerFilterQuery {
 
   /**
    * Constructs an OrderedNearQuery
@@ -53,15 +46,102 @@ public class OrderedNearQuery extends In
    * @param subqueries the subqueries to match.
    */
   public OrderedNearQuery(int slop, Query... subqueries) {
-    super(buildBooleanQuery(subqueries), new WithinOrderedFilter(slop, true));
+    super(buildBooleanQuery(subqueries), new OrderedNearScorerFactory(slop));
   }
 
-  private static BooleanQuery buildBooleanQuery(Query... queries) {
-    BooleanQuery bq = new BooleanQuery();
-    for (Query q : queries) {
-      bq.add(q, BooleanClause.Occur.MUST);
+  private static class OrderedNearScorerFactory implements ScorerFilterFactory {
+
+    private final int slop;
+
+    public OrderedNearScorerFactory(int slop) {
+      this.slop = slop;
+    }
+
+    @Override
+    public Scorer scorer(Scorer filteredScorer) {
+      return new OrderedNearScorer(filteredScorer, slop);
+    }
+
+    @Override
+    public String getName() {
+      return "OrderedNear/" + slop;
     }
-    return bq;
   }
 
+  private static class OrderedNearScorer extends PositionFilteredScorer {
+
+    private final int lastiter;
+    private final int slop;
+
+    private int index = 1;
+    private Interval[] intervals;
+
+    public OrderedNearScorer(Scorer filteredScorer, int slop) {
+      super(filteredScorer);
+      intervals = new Interval[subScorers.length];
+      for (int i = 0; i < subScorers.length; i++) {
+        intervals[i] = new Interval();
+      }
+      lastiter = intervals.length - 1;
+      this.slop = slop;
+    }
+
+    @Override
+    protected boolean passesFilter() {
+      return matchDistance <= slop;
+    }
+
+    @Override
+    public int freq() throws IOException {
+      return 1; // nocommit
+    }
+
+    @Override
+    protected void reset(int doc) throws IOException {
+      for (int i = 0; i < subScorers.length; i++) {
+        assert subScorers[i].docID() == doc;
+        intervals[i].update(Interval.INFINITE_INTERVAL);
+      }
+      if (subScorers[0].nextPosition() == NO_MORE_POSITIONS)
+        intervals[0].setMaximum();
+      else
+        intervals[0].update(subScorers[0]);
+      index = 1;
+    }
+
+    @Override
+    protected int doNextPosition() throws IOException {
+      if (intervals[0].begin == NO_MORE_POSITIONS)
+        return NO_MORE_POSITIONS;
+      current.setMaximum();
+      int b = Integer.MAX_VALUE;
+      while (true) {
+        while (true) {
+          final Interval previous = intervals[index - 1];
+          if (previous.end >= b) {
+            return current.begin;
+          }
+          if (index == intervals.length || intervals[index].begin > previous.end)
+            break;
+          Interval scratch = intervals[index];
+          do {
+            if (scratch.end >= b || subScorers[index].nextPosition() == NO_MORE_POSITIONS)
+              return current.begin;
+            intervals[index].update(subScorers[index]);
+            scratch = intervals[index];
+          } while (scratch.begin <= previous.end);
+          index++;
+        }
+        current.update(intervals[0], intervals[lastiter]);
+        matchDistance = (intervals[lastiter].begin - lastiter) - intervals[0].end;
+        b = intervals[lastiter].begin;
+        index = 1;
+        if (subScorers[0].nextPosition() == NO_MORE_POSITIONS) {
+          intervals[0].setMaximum();
+          return current.begin;
+        }
+        intervals[0].update(subScorers[0]);
+      }
+    }
+  }
 }

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBasicIntervals.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBasicIntervals.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBasicIntervals.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBasicIntervals.java Tue Feb 12 21:47:53 2013
@@ -64,6 +64,24 @@ public class TestBasicIntervals extends 
     });
   }
 
+  public void testExclusion() throws IOException {
+    Query q = makeBooleanQuery(makeBooleanClause("v2", BooleanClause.Occur.MUST),
+                               makeBooleanClause("v3", BooleanClause.Occur.MUST_NOT));
+    checkIntervals(q, searcher, new int[][]{
+        { 14, 1, 1, 2, 2 }
+    });
+  }
+
+  public void testOptExclusion() throws IOException {
+    Query q = makeBooleanQuery(makeBooleanClause("w2", BooleanClause.Occur.SHOULD),
+                               makeBooleanClause("w3", BooleanClause.Occur.SHOULD),
+                               makeBooleanClause("xx", BooleanClause.Occur.MUST_NOT));
+    checkIntervals(q, searcher, new int[][]{
+        { 0, 1, 1, 2, 2 },
+        { 1, 1, 1, 2, 2, 3, 3 }
+    });
+  }
+
   public void testNestedConjunctions() throws IOException {
     Query q = makeAndQuery(makeTermQuery("v2"), makeOrQuery(makeTermQuery("v3"), makeTermQuery("v4")));
     checkIntervals(q, searcher, new int[][]{
@@ -107,17 +125,15 @@ public class TestBasicIntervals extends 
     });
   }
 
-  /*
-
   public void testNearOrdered01() throws Exception {
-    Query q = new OrderedNearQuery(0, false, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(0, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 0, 0, 2 }
     });
   }
   
   public void testNearOrdered02() throws Exception {
-    Query q = new OrderedNearQuery(1, false, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(1, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 0, 0, 2 },
         { 1, 0, 3 }
@@ -125,7 +141,7 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrdered03() throws Exception {
-    Query q = new OrderedNearQuery(2, false, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(2, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 0, 0, 2 },
         { 1, 0, 3 },
@@ -134,7 +150,7 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrdered04() throws Exception {
-    Query q = new OrderedNearQuery(3, false, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(3, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 0, 0, 2 },
         { 1, 0, 3 },
@@ -144,7 +160,7 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrdered05() throws Exception {
-    Query q = new OrderedNearQuery(4, false, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(4, makeTermQuery("w1"), makeTermQuery("w2"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 0, 0, 2 },
         { 1, 0, 3 },
@@ -154,26 +170,26 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrderedEqual01() throws Exception {
-    Query q = new OrderedNearQuery(0, false, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(0, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{});
   }
   
   public void testNearOrderedEqual02() throws Exception {
-    Query q = new OrderedNearQuery(1, false, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(1, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 1, 0, 3 }
     });
   }
   
   public void testNearOrderedEqual03() throws Exception {
-    Query q = new OrderedNearQuery(2, false, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(2, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 1, 0, 3 }
     });
   }
   
   public void testNearOrderedEqual04() throws Exception {
-    Query q = new OrderedNearQuery(3, false, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
+    Query q = new OrderedNearQuery(3, makeTermQuery("w1"), makeTermQuery("w3"), makeTermQuery("w3"));
     checkIntervals(q, searcher, new int[][]{
         { 1, 0, 3 },
         { 3, 0, 5 }
@@ -181,14 +197,14 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrderedEqual11() throws Exception {
-    Query q = new OrderedNearQuery(0, false, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
+    Query q = new OrderedNearQuery(0, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
     checkIntervals(q, searcher, new int[][]{
         { 4, 0, 2 }
     });
   }
   
   public void testNearOrderedEqual13() throws Exception {
-    Query q = new OrderedNearQuery(1, false, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
+    Query q = new OrderedNearQuery(1, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
     checkIntervals(q, searcher, new int[][]{
         { 4, 0, 2 },
         { 5, 0, 3 },
@@ -197,7 +213,7 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrderedEqual14() throws Exception {
-    Query q = new OrderedNearQuery(2, false, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
+    Query q = new OrderedNearQuery(2, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
     checkIntervals(q, searcher, new int[][]{
         { 4, 0, 2 },
         { 5, 0, 3 },
@@ -207,7 +223,7 @@ public class TestBasicIntervals extends 
   }
   
   public void testNearOrderedEqual15() throws Exception {
-    Query q = new OrderedNearQuery(3, false, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
+    Query q = new OrderedNearQuery(3, makeTermQuery("u2"), makeTermQuery("u2"), makeTermQuery("u1"));
     checkIntervals(q, searcher, new int[][]{
         { 4, 0, 2 },
         { 5, 0, 3 },
@@ -217,11 +233,13 @@ public class TestBasicIntervals extends 
   }
 
   public void testNearOrderedOverlap() throws Exception {
-    Query q = new OrderedNearQuery(3, false, makeTermQuery("t1"), makeTermQuery("t2"), makeTermQuery("t3"));
+    Query q = new OrderedNearQuery(3, makeTermQuery("t1"), makeTermQuery("t2"), makeTermQuery("t3"));
     checkIntervals(q, searcher, new int[][]{
         { 11, 0, 3, 2, 5 }
     });
   }
+
+  /*
   
   public void testNearUnordered() throws Exception {
     Query q = new UnorderedNearQuery(0, false, makeTermQuery("u1"), makeTermQuery("u2"));

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBrouwerianQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBrouwerianQuery.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBrouwerianQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestBrouwerianQuery.java Tue Feb 12 21:47:53 2013
@@ -47,7 +47,7 @@ public class TestBrouwerianQuery extends
   
   public void testBrouwerianBooleanQuery() throws IOException {
 
-    Query query = new OrderedNearQuery(2, false, makeTermQuery("the"),
+    Query query = new OrderedNearQuery(2, makeTermQuery("the"),
                                         makeTermQuery("quick"), makeTermQuery("jumps"));
     Query sub = makeTermQuery("fox");
     NonOverlappingQuery q = new NonOverlappingQuery(query, sub);
@@ -59,7 +59,7 @@ public class TestBrouwerianQuery extends
 
   public void testBrouwerianBooleanQueryExcludedDoesNotExist() throws IOException {
 
-    Query query = new OrderedNearQuery(2, false, makeTermQuery("the"),
+    Query query = new OrderedNearQuery(2, makeTermQuery("the"),
         makeTermQuery("quick"), makeTermQuery("jumps"));
     Query sub = makeTermQuery("blox");
     NonOverlappingQuery q = new NonOverlappingQuery(query, sub);

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java Tue Feb 12 21:47:53 2013
@@ -61,7 +61,7 @@ public class TestConjunctionIntervalIter
   }
 
   public void testConjunctionOrderedQuery() throws IOException {
-    Query q = new OrderedNearQuery(0, false, makeTermQuery("pease"),
+    Query q = new OrderedNearQuery(0, makeTermQuery("pease"),
                                     makeTermQuery("porridge"), makeTermQuery("hot!"));
     checkIntervals(q, searcher, new int[][]{
         { 0, 0, 2, 31, 33 },

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java?rev=1445403&r1=1445402&r2=1445403&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java Tue Feb 12 21:47:53 2013
@@ -57,7 +57,7 @@ public class TestNestedIntervalFilterQue
 
   public void testFilterDisjunctionQuery() throws IOException {
     Query near1 = makeTermQuery("w4");
-    Query near2 = new OrderedNearQuery(3, false, makeTermQuery("w1"), makeTermQuery("w10"));
+    Query near2 = new OrderedNearQuery(3, makeTermQuery("w1"), makeTermQuery("w10"));
     BooleanQuery bq = new BooleanQuery();
     bq.add(near1, BooleanClause.Occur.SHOULD);
     bq.add(near2, BooleanClause.Occur.SHOULD);
@@ -71,8 +71,8 @@ public class TestNestedIntervalFilterQue
 
   // or(w1 pre/2 w2, w1 pre/3 w10)
   public void testOrNearNearQuery() throws IOException {
-    Query near1 = new OrderedNearQuery(2, false, makeTermQuery("w1"), makeTermQuery("w2"));
-    Query near2 = new OrderedNearQuery(3, false, makeTermQuery("w1"), makeTermQuery("w10"));
+    Query near1 = new OrderedNearQuery(2, makeTermQuery("w1"), makeTermQuery("w2"));
+    Query near2 = new OrderedNearQuery(3, makeTermQuery("w1"), makeTermQuery("w10"));
     BooleanQuery bq = new BooleanQuery();
     bq.add(near1, BooleanClause.Occur.SHOULD);
     bq.add(near2, BooleanClause.Occur.SHOULD);
@@ -99,8 +99,8 @@ public class TestNestedIntervalFilterQue
 
   // (a pre/2 b) pre/6 (c pre/2 d)
   public void testNearNearNearQuery() throws IOException {
-    Query near1 = new OrderedNearQuery(2, false, makeTermQuery("w1"), makeTermQuery("w4"));
-    Query near2 = new OrderedNearQuery(2, false, makeTermQuery("w10"), makeTermQuery("w12"));
+    Query near1 = new OrderedNearQuery(2, makeTermQuery("w1"), makeTermQuery("w4"));
+    Query near2 = new OrderedNearQuery(2, makeTermQuery("w10"), makeTermQuery("w12"));
     Query near3 = new OrderedNearQuery(6, near1, near2);
     checkIntervals(near3, searcher, new int[][]{
         { 0, 0, 11, 0, 3, 9, 11 }
@@ -108,8 +108,8 @@ public class TestNestedIntervalFilterQue
   }
 
   public void testOrNearNearNonExistentQuery() throws IOException {
-    Query near1 = new OrderedNearQuery(2, false, makeTermQuery("w1"), makeTermQuery("w12"));
-    Query near2 = new OrderedNearQuery(2, false, makeTermQuery("w3"), makeTermQuery("w8"));
+    Query near1 = new OrderedNearQuery(2, makeTermQuery("w1"), makeTermQuery("w12"));
+    Query near2 = new OrderedNearQuery(2, makeTermQuery("w3"), makeTermQuery("w8"));
     BooleanQuery bq = new BooleanQuery();
     bq.add(near1, BooleanClause.Occur.SHOULD);
     bq.add(near2, BooleanClause.Occur.SHOULD);