You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/01/16 18:40:26 UTC
svn commit: r1558865 [2/2] - in /lucene/dev/trunk: ./ lucene/ lucene/core/
lucene/core/src/java/org/apache/lucene/search/
lucene/core/src/java/org/apache/lucene/util/
lucene/core/src/test/org/apache/lucene/search/ lucene/expressions/
lucene/expressions...
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java?rev=1558865&r1=1558864&r2=1558865&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java Thu Jan 16 17:40:25 2014
@@ -93,6 +93,8 @@ public class TopGroupsResultTransformer
public Map<String, ?> transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) {
Map<String, Object> result = new HashMap<String, Object>();
+ final IndexSchema schema = rb.req.getSearcher().getSchema();
+
for (Map.Entry<String, NamedList> entry : shardResponse) {
String key = entry.getKey();
NamedList commandResult = entry.getValue();
@@ -124,6 +126,15 @@ public class TopGroupsResultTransformer
Object sortValuesVal = document.get("sortValues");
if (sortValuesVal != null) {
sortValues = ((List) sortValuesVal).toArray();
+ for (int k = 0; k < sortValues.length; k++) {
+ SchemaField field = groupSort.getSort()[k].getField() != null ? schema.getFieldOrNull(groupSort.getSort()[k].getField()) : null;
+ if (field != null) {
+ FieldType fieldType = field.getType();
+ if (sortValues[k] != null) {
+ sortValues[k] = fieldType.unmarshalSortValue(sortValues[k]);
+ }
+ }
+ }
}
else {
log.warn("doc {} has null 'sortValues'", document);
@@ -158,6 +169,15 @@ public class TopGroupsResultTransformer
score = Float.NaN;
}
Object[] sortValues = ((List) document.get("sortValues")).toArray();
+ for (int k = 0; k < sortValues.length; k++) {
+ SchemaField field = sortWithinGroup.getSort()[k].getField() != null ? schema.getFieldOrNull(sortWithinGroup.getSort()[k].getField()) : null;
+ if (field != null) {
+ FieldType fieldType = field.getType();
+ if (sortValues[k] != null) {
+ sortValues[k] = fieldType.unmarshalSortValue(sortValues[k]);
+ }
+ }
+ }
scoreDocs[j++] = new ShardDoc(score, sortValues, uniqueId, shard);
}
@@ -217,12 +237,8 @@ public class TopGroupsResultTransformer
SchemaField field = sortWithinGroup.getSort()[j].getField() != null ? schema.getFieldOrNull(sortWithinGroup.getSort()[j].getField()) : null;
if (field != null) {
FieldType fieldType = field.getType();
- if (sortValue instanceof BytesRef) {
- UnicodeUtil.UTF8toUTF16((BytesRef)sortValue, spare);
- String indexedValue = spare.toString();
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable(indexedValue), 1.0f));
- } else if (sortValue instanceof String) {
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable((String) sortValue), 1.0f));
+ if (sortValue != null) {
+ sortValue = fieldType.marshalSortValue(sortValue);
}
}
convertedSortValues[j] = sortValue;
@@ -272,12 +288,8 @@ public class TopGroupsResultTransformer
? schema.getFieldOrNull(groupSort.getSort()[j].getField()) : null;
if (field != null) {
FieldType fieldType = field.getType();
- if (sortValue instanceof BytesRef) {
- UnicodeUtil.UTF8toUTF16((BytesRef)sortValue, spare);
- String indexedValue = spare.toString();
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable(indexedValue), 1.0f));
- } else if (sortValue instanceof String) {
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable((String) sortValue), 1.0f));
+ if (sortValue != null) {
+ sortValue = fieldType.marshalSortValue(sortValue);
}
}
convertedSortValues[j] = sortValue;