You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2010/10/26 15:08:13 UTC

svn commit: r1027532 - in /lucene/dev/trunk/solr: ./ src/java/org/apache/solr/schema/ src/test/org/apache/solr/

Author: yonik
Date: Tue Oct 26 13:08:12 2010
New Revision: 1027532

URL: http://svn.apache.org/viewvc?rev=1027532&view=rev
Log:
SOLR-2195: search grouping - fix MutableValue for sortable numeric types

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableDoubleField.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableFloatField.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableIntField.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableLongField.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/TestGroupingSearch.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1027532&r1=1027531&r2=1027532&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Oct 26 13:08:12 2010
@@ -249,7 +249,8 @@ New Features
   (Martijn van Groningen, Emmanuel Keller, Shalin Shekhar Mangar,
    Koji Sekiguchi, Iv�n de Prado, Ryan McKinley, Marc Sturlese, Peter Karich,
    Bojan Smid, Charles Hornberger, Dieter Grad, Dmitry Lihachev, Doug Steigerwald,
-   Karsten Sperling, Michael Gundlach, Oleg Gnatovskiy, Thomas Traeger, yonik)
+   Karsten Sperling, Michael Gundlach, Oleg Gnatovskiy, Thomas Traeger,
+   Harish Agarwal, yonik)
 
 * SOLR-1316: Create autosuggest component.
   (Ankul Garg, Jason Rutherglen, Shalin Shekhar Mangar, gsingers, Robert Muir, ab)

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableDoubleField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableDoubleField.java?rev=1027532&r1=1027531&r2=1027532&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableDoubleField.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableDoubleField.java Tue Oct 26 13:08:12 2010
@@ -20,6 +20,8 @@ package org.apache.solr.schema;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.BytesRef;
 import org.apache.noggit.CharArr;
+import org.apache.solr.search.MutableValueDouble;
+import org.apache.solr.search.MutableValue;
 import org.apache.solr.search.function.ValueSource;
 import org.apache.solr.search.function.FieldCacheSource;
 import org.apache.solr.search.function.DocValues;
@@ -133,6 +135,23 @@ class SortableDoubleFieldSource extends 
       public String toString(int doc) {
         return description() + '=' + doubleVal(doc);
       }
+
+      @Override
+      public ValueFiller getValueFiller() {
+        return new ValueFiller() {
+          private final MutableValueDouble mval = new MutableValueDouble();
+
+          @Override
+          public MutableValue getValue() {
+            return mval;
+          }
+
+          @Override
+          public void fillValue(int doc) {
+            mval.value = doubleVal(doc);
+          }
+        };
+      }
     };
   }
 

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableFloatField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableFloatField.java?rev=1027532&r1=1027531&r2=1027532&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableFloatField.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableFloatField.java Tue Oct 26 13:08:12 2010
@@ -20,6 +20,8 @@ package org.apache.solr.schema;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.BytesRef;
 import org.apache.noggit.CharArr;
+import org.apache.solr.search.MutableValueFloat;
+import org.apache.solr.search.MutableValue;
 import org.apache.solr.search.function.ValueSource;
 import org.apache.solr.search.function.FieldCacheSource;
 import org.apache.solr.search.function.DocValues;
@@ -133,6 +135,23 @@ class SortableFloatFieldSource extends F
       public String toString(int doc) {
         return description() + '=' + floatVal(doc);
       }
+
+      @Override
+      public ValueFiller getValueFiller() {
+        return new ValueFiller() {
+          private final MutableValueFloat mval = new MutableValueFloat();
+
+          @Override
+          public MutableValue getValue() {
+            return mval;
+          }
+
+          @Override
+          public void fillValue(int doc) {
+            mval.value = floatVal(doc);
+          }
+        };
+      }
     };
   }
 

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableIntField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableIntField.java?rev=1027532&r1=1027531&r2=1027532&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableIntField.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableIntField.java Tue Oct 26 13:08:12 2010
@@ -20,6 +20,8 @@ package org.apache.solr.schema;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.BytesRef;
 import org.apache.noggit.CharArr;
+import org.apache.solr.search.MutableValueInt;
+import org.apache.solr.search.MutableValue;
 import org.apache.solr.search.function.ValueSource;
 import org.apache.solr.search.function.FieldCacheSource;
 import org.apache.solr.search.function.DocValues;
@@ -137,6 +139,24 @@ class SortableIntFieldSource extends Fie
       public String toString(int doc) {
         return description() + '=' + intVal(doc);
       }
+
+      @Override
+      public ValueFiller getValueFiller() {
+        return new ValueFiller() {
+          private final MutableValueInt mval = new MutableValueInt();
+
+          @Override
+          public MutableValue getValue() {
+            return mval;
+          }
+
+          @Override
+          public void fillValue(int doc) {
+            mval.value = intVal(doc);
+          }
+        };
+      }
+
     };
   }
 

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableLongField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableLongField.java?rev=1027532&r1=1027531&r2=1027532&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableLongField.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/schema/SortableLongField.java Tue Oct 26 13:08:12 2010
@@ -20,6 +20,8 @@ package org.apache.solr.schema;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.BytesRef;
 import org.apache.noggit.CharArr;
+import org.apache.solr.search.MutableValueLong;
+import org.apache.solr.search.MutableValue;
 import org.apache.solr.search.function.ValueSource;
 import org.apache.solr.search.function.FieldCacheSource;
 import org.apache.solr.search.function.DocValues;
@@ -134,6 +136,23 @@ class SortableLongFieldSource extends Fi
       public String toString(int doc) {
         return description() + '=' + longVal(doc);
       }
+
+      @Override
+      public ValueFiller getValueFiller() {
+        return new ValueFiller() {
+          private final MutableValueLong mval = new MutableValueLong();
+
+          @Override
+          public MutableValue getValue() {
+            return mval;
+          }
+
+          @Override
+          public void fillValue(int doc) {
+            mval.value = longVal(doc);
+          }
+        };
+      }
     };
   }
 

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/TestGroupingSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/TestGroupingSearch.java?rev=1027532&r1=1027531&r2=1027532&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/TestGroupingSearch.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/TestGroupingSearch.java Tue Oct 26 13:08:12 2010
@@ -37,11 +37,11 @@ public class TestGroupingSearch extends 
 
   @Test
   public void testGroupingGroupSortingScore_basic() {
-    assertU(add(doc("id", "1","name", "author1", "title", "a book title")));
-    assertU(add(doc("id", "2","name", "author1", "title", "the title")));
-    assertU(add(doc("id", "3","name", "author2", "title", "a book title")));
-    assertU(add(doc("id", "4","name", "author2", "title", "title")));
-    assertU(add(doc("id", "5","name", "author3", "title", "the title of a title")));
+    assertU(add(doc("id", "1","name", "author1", "title", "a book title", "group_si", "1")));
+    assertU(add(doc("id", "2","name", "author1", "title", "the title", "group_si", "2")));
+    assertU(add(doc("id", "3","name", "author2", "title", "a book title", "group_si", "1")));
+    assertU(add(doc("id", "4","name", "author2", "title", "title", "group_si", "2")));
+    assertU(add(doc("id", "5","name", "author3", "title", "the title of a title", "group_si", "1")));
     assertU(commit());
     
     assertQ(req("q","title:title", "group", "true", "group.field","name")
@@ -63,6 +63,19 @@ public class TestGroupingSearch extends 
             ,"//arr[@name='groups']/lst[3]/result[@numFound='1']"
             ,"//arr[@name='groups']/lst[3]/result/doc/*[@name='id'][.='5']"
             );
+
+    assertQ(req("q","title:title", "group", "true", "group.field","group_si")
+            ,"//lst[@name='grouped']/lst[@name='group_si']"
+            ,"*[count(//arr[@name='groups']/lst) = 2]"
+
+            ,"//arr[@name='groups']/lst[1]/int[@name='groupValue'][.='2']"
+            ,"//arr[@name='groups']/lst[1]/result[@numFound='2']"
+            ,"//arr[@name='groups']/lst[1]/result/doc/*[@name='id'][.='4']"
+
+            ,"//arr[@name='groups']/lst[2]/int[@name='groupValue'][.='1']"
+            ,"//arr[@name='groups']/lst[2]/result[@numFound='3']"
+            ,"//arr[@name='groups']/lst[2]/result/doc/*[@name='id'][.='5']"
+            );
   }
 
   @Test