You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2012/09/14 00:32:44 UTC

svn commit: r1384577 - in /lucene/dev/branches/branch_4x/solr: ./ cloud-dev/ contrib/ core/ core/src/java/org/apache/solr/handler/component/ core/src/test-files/solr/collection1/conf/ core/src/test/org/apache/solr/handler/component/ dev-tools/ example/...

Author: hossman
Date: Thu Sep 13 22:32:43 2012
New Revision: 1384577

URL: http://svn.apache.org/viewvc?rev=1384577&view=rev
Log:
SOLR-3828: Fixed QueryElevationComponent so that using 'markExcludes' does not modify the result set or ranking of 'excluded' documents relative to not using elevation at all (merge r1384567)

Modified:
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/README.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/cloud-dev/   (props changed)
    lucene/dev/branches/branch_4x/solr/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
    lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/elevate.xml
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java
    lucene/dev/branches/branch_4x/solr/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/example/   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/scripts/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/testlogging.properties   (props changed)
    lucene/dev/branches/branch_4x/solr/webapp/   (props changed)

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1384577&r1=1384576&r2=1384577&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Thu Sep 13 22:32:43 2012
@@ -154,6 +154,11 @@ Bug Fixes
 * SOLR-3809: Fixed config file replication when subdirectories are used
   (Emmanuel Espina via hossman)
 
+* SOLR-3828: Fixed QueryElevationComponent so that using 'markExcludes' does 
+  not modify the result set or ranking of 'excluded' documents relative to 
+  not using elevation at all.  (Alexey Serba via hossman)
+
+
 Other Changes
 ----------------------
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1384577&r1=1384576&r2=1384577&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Thu Sep 13 22:32:43 2012
@@ -385,9 +385,6 @@ public class QueryElevationComponent ext
             //we are only going to mark items as excluded, not actually exclude them.  This works
             //with the EditorialMarkerFactory
             rb.req.getContext().put(EXCLUDED, booster.excludeIds);
-            for (TermQuery tq : booster.exclude) {
-              newq.add(new BooleanClause(tq, BooleanClause.Occur.SHOULD));
-            }
           }
         }
         rb.setQuery(newq);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/elevate.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/elevate.xml?rev=1384577&r1=1384576&r2=1384577&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/elevate.xml (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/elevate.xml Thu Sep 13 22:32:43 2012
@@ -41,6 +41,11 @@
   <doc id="5" />
   <doc id="6" exclude="true" />
  </query>
+ 
+ <query text="QQQQ">
+  <doc id="10" exclude="true" />
+ </query>
+ 
 
  <query text="solr">
   <doc id="7" />

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java?rev=1384577&r1=1384576&r2=1384577&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java Thu Sep 13 22:32:43 2012
@@ -159,7 +159,7 @@ public class QueryElevationComponentTest
       req.close();
 
       // Make sure the boosts loaded properly
-      assertEquals(6, map.size());
+      assertEquals(7, map.size());
       assertEquals(1, map.get("XXXX").priority.size());
       assertEquals(2, map.get("YYYY").priority.size());
       assertEquals(3, map.get("ZZZZ").priority.size());
@@ -176,7 +176,7 @@ public class QueryElevationComponentTest
       comp.init(args);
       comp.inform(core);
       map = comp.getElevationMap(reader, core);
-      assertEquals(6, map.size());
+      assertEquals(7, map.size());
       assertEquals(null, map.get("XXXX"));
       assertEquals(null, map.get("YYYY"));
       assertEquals(null, map.get("ZZZZ"));
@@ -251,21 +251,28 @@ public class QueryElevationComponentTest
       assertU(adoc("id", "5", "title", "YYYY YYYY", "str_s1", "y"));
       assertU(adoc("id", "6", "title", "XXXX XXXX", "str_s1", "z"));
       assertU(adoc("id", "7", "title", "AAAA", "str_s1", "a"));
+      
+      assertU(adoc("id", "8", "title", "QQQQ", "str_s1", "q"));
+      assertU(adoc("id", "9", "title", "QQQQ QQQQ", "str_s1", "r"));
+      assertU(adoc("id", "10", "title", "QQQQ QQQQ QQQQ", "str_s1", "s"));
+      
       assertU(commit());
 
       assertQ("", req(CommonParams.Q, "XXXX XXXX", CommonParams.QT, "/elevate",
           QueryElevationParams.MARK_EXCLUDES, "true",
+          "indent", "true",
           CommonParams.FL, "id, score, [excluded]")
           , "//*[@numFound='4']"
           , "//result/doc[1]/str[@name='id'][.='5']"
-          , "//result/doc[2]/str[@name='id'][.='6']"
-          , "//result/doc[3]/str[@name='id'][.='1']"
-          , "//result/doc[4]/str[@name='id'][.='4']",
+          , "//result/doc[2]/str[@name='id'][.='1']"
+          , "//result/doc[3]/str[@name='id'][.='4']"
+          , "//result/doc[4]/str[@name='id'][.='6']",
           "//result/doc[1]/bool[@name='[excluded]'][.='false']",
-          "//result/doc[2]/bool[@name='[excluded]'][.='true']",
+          "//result/doc[2]/bool[@name='[excluded]'][.='false']",
           "//result/doc[3]/bool[@name='[excluded]'][.='false']",
-          "//result/doc[4]/bool[@name='[excluded]'][.='false']"
+          "//result/doc[4]/bool[@name='[excluded]'][.='true']"
       );
+      
       //ask for excluded as a field, but don't actually request the MARK_EXCLUDES
       //thus, number 6 should not be returned, b/c it is excluded
       assertQ("", req(CommonParams.Q, "XXXX XXXX", CommonParams.QT, "/elevate",
@@ -279,7 +286,32 @@ public class QueryElevationComponentTest
           "//result/doc[2]/bool[@name='[excluded]'][.='false']",
           "//result/doc[3]/bool[@name='[excluded]'][.='false']"
       );
-
+      
+      // test that excluded results are on the same positions in the result list
+      // as when elevation component is disabled
+      // (i.e. test that elevation component with MARK_EXCLUDES does not boost
+      // excluded results)
+      assertQ("", req(CommonParams.Q, "QQQQ", CommonParams.QT, "/elevate",
+          QueryElevationParams.ENABLE, "false",
+          "indent", "true",
+          CommonParams.FL, "id, score")
+          , "//*[@numFound='3']"
+          , "//result/doc[1]/str[@name='id'][.='8']"
+          , "//result/doc[2]/str[@name='id'][.='9']"
+          , "//result/doc[3]/str[@name='id'][.='10']"
+      );
+      assertQ("", req(CommonParams.Q, "QQQQ", CommonParams.QT, "/elevate",
+          QueryElevationParams.MARK_EXCLUDES, "true",
+          "indent", "true",
+          CommonParams.FL, "id, score, [excluded]")
+          , "//*[@numFound='3']"
+          , "//result/doc[1]/str[@name='id'][.='8']"
+          , "//result/doc[2]/str[@name='id'][.='9']"
+          , "//result/doc[3]/str[@name='id'][.='10']",
+          "//result/doc[1]/bool[@name='[excluded]'][.='false']",
+          "//result/doc[2]/bool[@name='[excluded]'][.='false']",
+          "//result/doc[3]/bool[@name='[excluded]'][.='true']"
+      );
     } finally {
       delete();
     }