You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2016/10/15 23:55:33 UTC

[21/24] lucene-solr:jira/solr-8396: Fixed case of return DocValues

Fixed case of return DocValues


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ac9ac3b8
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ac9ac3b8
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ac9ac3b8

Branch: refs/heads/jira/solr-8396
Commit: ac9ac3b8f89e73405397f0bb8de6296cfc302594
Parents: ebcfc23
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Sat Oct 15 10:21:37 2016 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Sat Oct 15 10:21:37 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/solr/response/DocsStreamer.java |  4 ++++
 .../org/apache/solr/schema/DoublePointField.java    | 16 ++++++++++++++++
 .../java/org/apache/solr/schema/IntPointField.java  | 10 ++++++++++
 .../src/java/org/apache/solr/schema/PointField.java |  2 +-
 4 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac9ac3b8/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/DocsStreamer.java b/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
index bee699c..d368236 100644
--- a/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
+++ b/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
@@ -31,8 +31,10 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.response.transform.DocTransformer;
 import org.apache.solr.schema.BinaryField;
 import org.apache.solr.schema.BoolField;
+import org.apache.solr.schema.DoublePointField;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.IntPointField;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.schema.StrField;
 import org.apache.solr.schema.TextField;
@@ -213,6 +215,8 @@ public class DocsStreamer implements Iterator<SolrDocument> {
     KNOWN_TYPES.add(TrieDoubleField.class);
     KNOWN_TYPES.add(TrieDateField.class);
     KNOWN_TYPES.add(BinaryField.class);
+    KNOWN_TYPES.add(IntPointField.class);
+    KNOWN_TYPES.add(DoublePointField.class);
     // We do not add UUIDField because UUID object is not a supported type in JavaBinCodec
     // and if we write UUIDField.toObject, we wouldn't know how to handle it in the client side
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac9ac3b8/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/DoublePointField.java b/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
index 487f86c..7729d03 100644
--- a/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
@@ -21,6 +21,7 @@ import java.lang.invoke.MethodHandles;
 
 import org.apache.lucene.document.DoublePoint;
 import org.apache.lucene.document.StoredField;
+import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.legacy.LegacyNumericType;
 import org.apache.lucene.queries.function.ValueSource;
@@ -80,6 +81,20 @@ public class DoublePointField extends PointField implements DoubleValueFieldType
   public Object toObject(SchemaField sf, BytesRef term) {
     return DoublePoint.decodeDimension(term.bytes, term.offset);
   }
+  
+  @Override
+  public Object toObject(IndexableField f) {
+    final Number val = f.numericValue();
+    if (val != null) {
+      if (f.fieldType().stored() == false && f.fieldType().docValuesType() == DocValuesType.NUMERIC) {
+        return Double.longBitsToDouble(val.longValue());
+      } else {
+        return val;
+      }
+    } else {
+      throw new AssertionError("Unexpected state. Field: '" + f + "'");
+    }
+  }
 
   @Override
   protected Query getExactQuery(QParser parser, SchemaField field, String externalVal) {
@@ -143,6 +158,7 @@ public class DoublePointField extends PointField implements DoubleValueFieldType
 
   @Override
   public LegacyNumericType getNumericType() {
+    // TODO: refactor this to not use LegacyNumericType
     return LegacyNumericType.DOUBLE;
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac9ac3b8/solr/core/src/java/org/apache/solr/schema/IntPointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/IntPointField.java b/solr/core/src/java/org/apache/solr/schema/IntPointField.java
index 893f9bf..ba3d735 100644
--- a/solr/core/src/java/org/apache/solr/schema/IntPointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/IntPointField.java
@@ -95,6 +95,16 @@ public class IntPointField extends PointField implements IntValueFieldType {
   public Object toObject(SchemaField sf, BytesRef term) {
     return IntPoint.decodeDimension(term.bytes, term.offset);
   }
+  
+  @Override
+  public Object toObject(IndexableField f) {
+    final Number val = f.numericValue();
+    if (val != null) {
+      return val;
+    } else {
+      throw new AssertionError("Unexpected state. Field: '" + f + "'");
+    }
+  }
 
   @Override
   protected Query getExactQuery(QParser parser, SchemaField field, String externalVal) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac9ac3b8/solr/core/src/java/org/apache/solr/schema/PointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/PointField.java b/solr/core/src/java/org/apache/solr/schema/PointField.java
index 8480439..e496cf0 100644
--- a/solr/core/src/java/org/apache/solr/schema/PointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/PointField.java
@@ -158,7 +158,7 @@ public abstract class PointField extends PrimitiveFieldType {
   
   @Override
   public void write(TextResponseWriter writer, String name, IndexableField f) throws IOException {
-    writer.writeVal(name, f.numericValue());
+    writer.writeVal(name, toObject(f));
   }
 
   @Override