mirror of https://github.com/apache/lucene.git
SOLR-2195: search grouping - fix MutableValue for sortable numeric types
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1027532 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8b7abe6f1c
commit
a209a21d89
|
@ -249,7 +249,8 @@ New Features
|
|||
(Martijn van Groningen, Emmanuel Keller, Shalin Shekhar Mangar,
|
||||
Koji Sekiguchi, Iv<49>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)
|
||||
|
|
|
@ -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 FieldCacheSource {
|
|||
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);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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 FieldCacheSource {
|
|||
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);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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 FieldCacheSource {
|
|||
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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -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 FieldCacheSource {
|
|||
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);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -37,11 +37,11 @@ public class TestGroupingSearch extends SolrTestCaseJ4 {
|
|||
|
||||
@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 SolrTestCaseJ4 {
|
|||
,"//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
|
||||
|
|
Loading…
Reference in New Issue