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 2012/11/13 12:38:27 UTC

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

Author: romseygeek
Date: Tue Nov 13 11:38:26 2012
New Revision: 1408683

URL: http://svn.apache.org/viewvc?rev=1408683&view=rev
Log:
LUCENE-2878: Fix UnorderedNearQuery to correctly take into account match length; other test bugs

Modified:
    lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/UnorderedNearQuery.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/TestConjunctionIntervalIterator.java

Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/UnorderedNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/UnorderedNearQuery.java?rev=1408683&r1=1408682&r2=1408683&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/UnorderedNearQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/UnorderedNearQuery.java Tue Nov 13 11:38:26 2012
@@ -43,7 +43,7 @@ public class UnorderedNearQuery extends 
    * @param subqueries the subqueries to match.
    */
   public UnorderedNearQuery(int slop, boolean collectLeaves, Query... subqueries) {
-    super(buildBooleanQuery(subqueries), new WithinIntervalFilter(slop, collectLeaves));
+    super(buildBooleanQuery(subqueries), new WithinIntervalFilter(slop + subqueries.length - 2, collectLeaves));
   }
 
   /**
@@ -52,7 +52,7 @@ public class UnorderedNearQuery extends 
    * @param subqueries the subqueries to match.
    */
   public UnorderedNearQuery(int slop, Query... subqueries) {
-    super(buildBooleanQuery(subqueries), new WithinIntervalFilter(slop, true));
+    this(slop, true, subqueries);
   }
 
   private static BooleanQuery buildBooleanQuery(Query... queries) {

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=1408683&r1=1408682&r2=1408683&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 Nov 13 11:38:26 2012
@@ -177,21 +177,34 @@ public class TestBasicIntervals extends 
         { 10, 0, 1 }
     });
   }
+  /*
+        "w1 w2 w3 w4 w5", //0
+      "w1 w3 w2 w3",//1
+      "w1 xx w2 yy w3",//2
+      "w1 w3 xx w2 yy w3",//3
+      "u2 u2 u1", //4
+      "u2 xx u2 u1",//5
+      "u2 u2 xx u1", //6
+      "u2 xx u2 yy u1", //7
+      "u2 xx u1 u2",//8
+      "u1 u2 xx u2",//9
+      "u2 u1 xx u2",//10
+      "t1 t2 t1 t3 t2 t3"};//11
+   */
 
-  // ((u1 near u2) near u2)
+  // ((u1 near u2) near xx)
   public void testNestedNear() throws Exception {
 
-    Query q = new OrderedNearQuery(0, false, makeTermQuery("u1"), makeTermQuery("u2"));
+    Query q = new UnorderedNearQuery(0, false, makeTermQuery("u1"), makeTermQuery("u2"));
     BooleanQuery topq = new BooleanQuery();
     topq.add(q, Occur.MUST);
-    topq.add(makeTermQuery("u2"), Occur.MUST);
+    topq.add(makeTermQuery("xx"), Occur.MUST);
 
     checkIntervals(topq, searcher, new int[][]{
-        { 4, 1, 2 },
-        { 5, 2, 3 },
-        { 8, 2, 3 },
-        { 9, 0, 1 },
-        { 10, 0, 1 }
+        { 5, 1, 3, 1, 1, 2, 3 },
+        { 8, 1, 3, 1, 1, 2, 3 },
+        { 9, 0, 2, 0, 1, 2, 2 },
+        { 10, 0, 2, 0, 1, 2, 2 }
     });
 
   }
@@ -199,24 +212,32 @@ public class TestBasicIntervals extends 
   public void testOrSingle() throws Exception {
     Query q = makeOrQuery(makeTermQuery("w5"));
     checkIntervals(q, searcher, new int[][]{
-        { 0, 4, 5 }
+        { 0, 4, 4 }
     });
   }
-  
+
   public void testOrPartialMatch() throws Exception {
     Query q = makeOrQuery(makeTermQuery("w5"), makeTermQuery("xx"));
     checkIntervals(q, searcher, new int[][]{
-        { 0, 4, 5 }
+        { 0, 4, 4 },
+        { 2, 1, 1 },
+        { 3, 2, 2 },
+        { 5, 1, 1 },
+        { 6, 2, 2 },
+        { 7, 1, 1 },
+        { 8, 1, 1 },
+        { 9, 2, 2 },
+        { 10, 2, 2 },
     });
   }
 
   public void testOrDisjunctionMatch() throws Exception {
     Query q = makeOrQuery(makeTermQuery("w5"), makeTermQuery("yy"));
     checkIntervals(q, searcher, new int[][]{
-        { 0, 4, 5 },
-        { 2, 3, 4 },
-        { 3, 4, 5 },
-        { 7, 3, 4 }
+        { 0, 4, 4 },
+        { 2, 3, 3 },
+        { 3, 4, 4 },
+        { 7, 3, 3 }
     });
   }
 

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=1408683&r1=1408682&r2=1408683&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 Nov 13 11:38:26 2012
@@ -73,7 +73,7 @@ public class TestConjunctionIntervalIter
     Query q = new UnorderedNearQuery(0, false, makeTermQuery("pease"),
                                       makeTermQuery("porridge"), makeTermQuery("hot!"));
     checkIntervals(q, searcher, new int[][]{
-        { 0, 0, 2, 1, 3, 2, 4, 31, 33, 32, 24, 33, 35 },
+        { 0, 0, 2, 1, 3, 2, 4, 31, 33, 32, 34, 33, 35 },
         { 1, 3, 5, 4, 6, 5, 7, 34, 36 }
     });
   }