You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2015/06/25 03:47:55 UTC

svn commit: r1687406 - in /lucene/dev/branches/branch_5x: ./ lucene/ lucene/core/ lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java

Author: rmuir
Date: Thu Jun 25 01:47:54 2015
New Revision: 1687406

URL: http://svn.apache.org/r1687406
Log:
LUCENE-6585: add some tests that coord is applied properly for nested conjunctions

Modified:
    lucene/dev/branches/branch_5x/   (props changed)
    lucene/dev/branches/branch_5x/lucene/   (props changed)
    lucene/dev/branches/branch_5x/lucene/core/   (props changed)
    lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java

Modified: lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java?rev=1687406&r1=1687405&r2=1687406&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java Thu Jun 25 01:47:54 2015
@@ -710,6 +710,68 @@ public class TestBooleanCoord extends Lu
     assertScore(3, bq);
   }
   
+  // nested cases, make sure conjunctions propagate scoring
+  
+  public void testConjunctionNested() throws Exception {
+    BooleanQuery inner = new BooleanQuery();
+    inner.add(term("A"), BooleanClause.Occur.MUST);
+    inner.add(term("B"), BooleanClause.Occur.MUST);
+    BooleanQuery outer = new BooleanQuery();
+    outer.add(inner, BooleanClause.Occur.MUST);
+    outer.add(term("C"), BooleanClause.Occur.MUST);
+    float innerScore = (1 + 1) * 2/(2f+1);
+    float outerScore = (innerScore + 1) * 2/(2f+1);
+    assertScore(outerScore, outer);
+  }
+  
+  public void testConjunctionNestedOuterCoordDisabled() throws Exception {
+    BooleanQuery inner = new BooleanQuery();
+    inner.add(term("A"), BooleanClause.Occur.MUST);
+    inner.add(term("B"), BooleanClause.Occur.MUST);
+    BooleanQuery outer = new BooleanQuery(true);
+    outer.add(inner, BooleanClause.Occur.MUST);
+    outer.add(term("C"), BooleanClause.Occur.MUST);
+    float innerScore = (1 + 1) * 2/(2f+1);
+    float outerScore = (innerScore + 1);
+    assertScore(outerScore, outer);
+  }
+  
+  public void testConjunctionNestedInnerCoordDisabled() throws Exception {
+    BooleanQuery inner = new BooleanQuery(true);
+    inner.add(term("A"), BooleanClause.Occur.MUST);
+    inner.add(term("B"), BooleanClause.Occur.MUST);
+    BooleanQuery outer = new BooleanQuery();
+    outer.add(inner, BooleanClause.Occur.MUST);
+    outer.add(term("C"), BooleanClause.Occur.MUST);
+    float innerScore = (1 + 1);
+    float outerScore = (innerScore + 1) * 2/(2f+1);
+    assertScore(outerScore, outer);
+  }
+  
+  public void testConjunctionNestedCoordDisabledEverywhere() throws Exception {
+    BooleanQuery inner = new BooleanQuery(true);
+    inner.add(term("A"), BooleanClause.Occur.MUST);
+    inner.add(term("B"), BooleanClause.Occur.MUST);
+    BooleanQuery outer = new BooleanQuery(true);
+    outer.add(inner, BooleanClause.Occur.MUST);
+    outer.add(term("C"), BooleanClause.Occur.MUST);
+    float innerScore = (1 + 1);
+    float outerScore = (innerScore + 1);
+    assertScore(outerScore, outer);
+  }
+  
+  public void testConjunctionNestedSingle() throws Exception {
+    BooleanQuery inner = new BooleanQuery();
+    inner.add(term("A"), BooleanClause.Occur.MUST);
+    inner.add(term("B"), BooleanClause.Occur.MUST);
+    BooleanQuery outer = new BooleanQuery();
+    outer.add(inner, BooleanClause.Occur.MUST);
+    float innerScore = (1 + 1) * 2/(2f+1);
+    // LUCENE-4300: coord(1,1) is always treated as 1
+    float outerScore = innerScore * 1;
+    assertScore(outerScore, outer);
+  }
+  
   /** asserts score for our single matching good doc */
   private void assertScore(final float expected, Query query) throws Exception {
     // test in-order