You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jb...@apache.org on 2014/04/29 06:43:08 UTC

svn commit: r1590865 - in /lucene/dev/trunk/solr/core/src: java/org/apache/solr/search/CollapsingQParserPlugin.java test/org/apache/solr/search/TestCollapseQParserPlugin.java

Author: jbernste
Date: Tue Apr 29 04:43:07 2014
New Revision: 1590865

URL: http://svn.apache.org/r1590865
Log:
SOLR-6029: CollapsingQParserPlugin throws ArrayIndexOutOfBoundsException if elevated doc has been deleted from a segment

Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java?rev=1590865&r1=1590864&r2=1590865&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java Tue Apr 29 04:43:07 2014
@@ -266,7 +266,7 @@ public class CollapsingQParserPlugin ext
             if(termsEnum.seekExact(ref)) {
               docsEnum = termsEnum.docs(liveDocs, docsEnum);
               int doc = docsEnum.nextDoc();
-              if(doc != -1) {
+              if(doc != DocsEnum.NO_MORE_DOCS) {
                 //Found the document.
                 boostDocs.add(doc+docBase);
                 it.remove();

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java?rev=1590865&r1=1590864&r2=1590865&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java Tue Apr 29 04:43:07 2014
@@ -343,6 +343,23 @@ public class TestCollapseQParserPlugin e
     params.add("group.field", "id");
     assertQ(req(params), "*[count(//doc)=2]");
 
+
+    // delete the elevated docs, confirm collapsing still works
+    assertU(delI("1"));
+    assertU(delI("2"));
+    assertU(commit());
+    params = new ModifiableSolrParams();
+    params.add("q", "YYYY");
+    params.add("fq", "{!collapse field=group_s nullPolicy=collapse}");
+    params.add("defType", "edismax");
+    params.add("bf", "field(test_ti)");
+    params.add("qf", "term_s");
+    params.add("qt", "/elevate");
+    assertQ(req(params), "*[count(//doc)=2]",
+                         "//result/doc[1]/float[@name='id'][.='3.0']",
+                         "//result/doc[2]/float[@name='id'][.='6.0']");
+
+
   }
 
   @Test