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 2012/01/11 21:39:43 UTC

svn commit: r1230237 - in /lucene/dev/branches/lucene3453: lucene/contrib/demo/src/java/org/apache/lucene/demo/ lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/ lucene/contrib/misc/src/java/org/apache/lucene/document/ lucene/cont...

Author: mikemccand
Date: Wed Jan 11 20:39:42 2012
New Revision: 1230237

URL: http://svn.apache.org/viewvc?rev=1230237&view=rev
Log:
LUCENE-3453: move NumericField's type over to IndexableFieldType (from IndexableField)

Modified:
    lucene/dev/branches/lucene3453/lucene/contrib/demo/src/java/org/apache/lucene/demo/IndexFiles.java
    lucene/dev/branches/lucene3453/lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
    lucene/dev/branches/lucene3453/lucene/contrib/misc/src/java/org/apache/lucene/document/LazyDocument.java
    lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesian.java
    lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestDistance.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsWriter.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/DocumentStoredFieldVisitor.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/Field.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/FieldType.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/NumericField.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableField.java
    lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableFieldType.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/codecs/lucene40/TestDocValues.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestIndexableField.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestTermsEnum.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestFieldCache.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java
    lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestTopDocsMerge.java
    lucene/dev/branches/lucene3453/modules/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/DocMaker.java
    lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java
    lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
    lucene/dev/branches/lucene3453/modules/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
    lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java
    lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java
    lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/schema/TrieField.java
    lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java

Modified: lucene/dev/branches/lucene3453/lucene/contrib/demo/src/java/org/apache/lucene/demo/IndexFiles.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/contrib/demo/src/java/org/apache/lucene/demo/IndexFiles.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/contrib/demo/src/java/org/apache/lucene/demo/IndexFiles.java (original)
+++ lucene/dev/branches/lucene3453/lucene/contrib/demo/src/java/org/apache/lucene/demo/IndexFiles.java Wed Jan 11 20:39:42 2012
@@ -184,9 +184,7 @@ public class IndexFiles {
           // year/month/day/hour/minutes/seconds, down the resolution you require.
           // For example the long value 2011021714 would mean
           // February 17, 2011, 2-3 PM.
-          NumericField modifiedField = new NumericField("modified");
-          modifiedField.setLongValue(file.lastModified());
-          doc.add(modifiedField);
+          doc.add(new NumericField("modified", file.lastModified()));
 
           // Add the contents of the file to a field named "contents".  Specify a Reader,
           // so that the text of the file is tokenized and indexed, but not stored.

Modified: lucene/dev/branches/lucene3453/lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java (original)
+++ lucene/dev/branches/lucene3453/lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java Wed Jan 11 20:39:42 2012
@@ -1738,21 +1738,21 @@ public class HighlighterTest extends Bas
       addDoc(writer, text);
     }
     Document doc = new Document();
-    NumericField nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.TYPE_STORED);
+    NumericField nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.getFieldType(NumericField.DataType.INT, true));
     nfield.setIntValue(1);
     doc.add(nfield);
     writer.addDocument(doc, analyzer);
-    nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.TYPE_STORED);
+    nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.getFieldType(NumericField.DataType.INT, true));
     nfield.setIntValue(3);
     doc = new Document();
     doc.add(nfield);
     writer.addDocument(doc, analyzer);
-    nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.TYPE_STORED);
+    nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.getFieldType(NumericField.DataType.INT, true));
     nfield.setIntValue(5);
     doc = new Document();
     doc.add(nfield);
     writer.addDocument(doc, analyzer);
-    nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.TYPE_STORED);
+    nfield = new NumericField(NUMERIC_FIELD_NAME, NumericField.getFieldType(NumericField.DataType.INT, true));
     nfield.setIntValue(7);
     doc = new Document();
     doc.add(nfield);

Modified: lucene/dev/branches/lucene3453/lucene/contrib/misc/src/java/org/apache/lucene/document/LazyDocument.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/contrib/misc/src/java/org/apache/lucene/document/LazyDocument.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/contrib/misc/src/java/org/apache/lucene/document/LazyDocument.java (original)
+++ lucene/dev/branches/lucene3453/lucene/contrib/misc/src/java/org/apache/lucene/document/LazyDocument.java Wed Jan 11 20:39:42 2012
@@ -23,7 +23,6 @@ import java.util.Map;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.document.NumericField.DataType;
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexableField;
@@ -119,15 +118,6 @@ public class LazyDocument {
     }
 
     @Override
-    public DataType numericDataType() {
-      if (num == 0) {
-        return getDocument().getField(name).numericDataType();
-      } else {
-        return getDocument().getFields(name)[num].numericDataType();
-      }
-    }
-
-    @Override
     public Number numericValue() {
       if (num == 0) {
         return getDocument().getField(name).numericValue();

Modified: lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesian.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesian.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesian.java (original)
+++ lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesian.java Wed Jan 11 20:39:42 2012
@@ -98,8 +98,8 @@ public class TestCartesian extends Lucen
     doc.add(newField("name", name, TextField.TYPE_STORED));
     
     // convert the lat / long to lucene fields
-    doc.add(new NumericField(latField, Integer.MAX_VALUE, NumericField.TYPE_STORED).setDoubleValue(lat));
-    doc.add(new NumericField(lngField, Integer.MAX_VALUE, NumericField.TYPE_STORED).setDoubleValue(lng));
+    doc.add(new NumericField(latField, Integer.MAX_VALUE, NumericField.getFieldType(NumericField.DataType.DOUBLE, true)).setDoubleValue(lat));
+    doc.add(new NumericField(lngField, Integer.MAX_VALUE, NumericField.getFieldType(NumericField.DataType.DOUBLE, true)).setDoubleValue(lng));
     
     // add a default meta field to make searching all documents easy 
     doc.add(newField("metafile", "doc", TextField.TYPE_STORED));
@@ -107,7 +107,7 @@ public class TestCartesian extends Lucen
     int ctpsize = ctps.size();
     for (int i =0; i < ctpsize; i++){
       CartesianTierPlotter ctp = ctps.get(i);
-      doc.add(new NumericField(ctp.getTierFieldName(), Integer.MAX_VALUE, TextField.TYPE_STORED).setDoubleValue(ctp.getTierBoxId(lat,lng)));
+      doc.add(new NumericField(ctp.getTierFieldName(), Integer.MAX_VALUE, NumericField.getFieldType(NumericField.DataType.DOUBLE, true)).setDoubleValue(ctp.getTierBoxId(lat,lng)));
       
       doc.add(newField(geoHashPrefix, GeoHashUtils.encode(lat,lng), StringField.TYPE_STORED));
     }

Modified: lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestDistance.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestDistance.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestDistance.java (original)
+++ lucene/dev/branches/lucene3453/lucene/contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestDistance.java Wed Jan 11 20:39:42 2012
@@ -66,8 +66,8 @@ public class TestDistance extends Lucene
     doc.add(newField("name", name, TextField.TYPE_STORED));
     
     // convert the lat / long to lucene fields
-    doc.add(new NumericField(latField, Integer.MAX_VALUE, NumericField.TYPE_STORED).setDoubleValue(lat));
-    doc.add(new NumericField(lngField, Integer.MAX_VALUE, NumericField.TYPE_STORED).setDoubleValue(lng));
+    doc.add(new NumericField(latField, Integer.MAX_VALUE, NumericField.getFieldType(NumericField.DataType.DOUBLE, true)).setDoubleValue(lat));
+    doc.add(new NumericField(lngField, Integer.MAX_VALUE, NumericField.getFieldType(NumericField.DataType.DOUBLE, true)).setDoubleValue(lng));
     
     // add a default meta field to make searching all documents easy 
     doc.add(newField("metafile", "doc", TextField.TYPE_STORED));

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/lucene40/Lucene40StoredFieldsWriter.java Wed Jan 11 20:39:42 2012
@@ -137,7 +137,7 @@ public final class Lucene40StoredFieldsW
     // this way we don't bake into indexer all these
     // specific encodings for different fields?  and apps
     // can customize...
-    final NumericField.DataType numericType = field.numericDataType();
+    final NumericField.DataType numericType = field.fieldType().numericType();
     if (numericType != null) {
       switch (numericType) {
         case INT:
@@ -175,7 +175,7 @@ public final class Lucene40StoredFieldsW
       if (n == null) {
         throw new IllegalArgumentException("field " + field.name() + " is stored but does not have binaryValue, stringValue nor numericValue");
       }
-      switch (field.numericDataType()) {
+      switch (field.fieldType().numericType()) {
         case INT:
           fieldsStream.writeInt(n.intValue()); break;
         case LONG:

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsWriter.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsWriter.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextStoredFieldsWriter.java Wed Jan 11 20:39:42 2012
@@ -99,7 +99,7 @@ public class SimpleTextStoredFieldsWrite
     newLine();
     
     write(TYPE);
-    final NumericField.DataType numericType = field.numericDataType();
+    final NumericField.DataType numericType = field.fieldType().numericType();
 
     if (numericType != null) {
       switch (numericType) {

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/DocumentStoredFieldVisitor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/DocumentStoredFieldVisitor.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/DocumentStoredFieldVisitor.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/DocumentStoredFieldVisitor.java Wed Jan 11 20:39:42 2012
@@ -73,29 +73,25 @@ public class DocumentStoredFieldVisitor 
 
   @Override
   public void intField(FieldInfo fieldInfo, int value) {
-    FieldType ft = new FieldType(NumericField.TYPE_STORED);
-    ft.setIndexed(fieldInfo.isIndexed);
+    FieldType ft = NumericField.getFieldType(NumericField.DataType.INT, true);
     doc.add(new NumericField(fieldInfo.name, ft).setIntValue(value));
   }
 
   @Override
   public void longField(FieldInfo fieldInfo, long value) {
-    FieldType ft = new FieldType(NumericField.TYPE_STORED);
-    ft.setIndexed(fieldInfo.isIndexed);
+    FieldType ft = NumericField.getFieldType(NumericField.DataType.LONG, true);
     doc.add(new NumericField(fieldInfo.name, ft).setLongValue(value));
   }
 
   @Override
   public void floatField(FieldInfo fieldInfo, float value) {
-    FieldType ft = new FieldType(NumericField.TYPE_STORED);
-    ft.setIndexed(fieldInfo.isIndexed);
+    FieldType ft = NumericField.getFieldType(NumericField.DataType.FLOAT, true);
     doc.add(new NumericField(fieldInfo.name, ft).setFloatValue(value));
   }
 
   @Override
   public void doubleField(FieldInfo fieldInfo, double value) {
-    FieldType ft = new FieldType(NumericField.TYPE_STORED);
-    ft.setIndexed(fieldInfo.isIndexed);
+    FieldType ft = NumericField.getFieldType(NumericField.DataType.DOUBLE, true);
     doc.add(new NumericField(fieldInfo.name, ft).setDoubleValue(value));
   }
 

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/Field.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/Field.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/Field.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/Field.java Wed Jan 11 20:39:42 2012
@@ -285,10 +285,6 @@ public class Field implements IndexableF
     }
   }
 
-  public NumericField.DataType numericDataType() {
-    return null;
-  }
-  
   public BytesRef binaryValue() {
     if (!isBinary()) {
       return null;

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/FieldType.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/FieldType.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/FieldType.java Wed Jan 11 20:39:42 2012
@@ -32,6 +32,7 @@ public class FieldType implements Indexa
   private boolean omitNorms;
   private IndexOptions indexOptions = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
   private DocValues.Type docValueType;
+  private NumericField.DataType numericType;
   private boolean frozen;
 
   public FieldType(IndexableFieldType ref) {
@@ -43,6 +44,8 @@ public class FieldType implements Indexa
     this.storeTermVectorPositions = ref.storeTermVectorPositions();
     this.omitNorms = ref.omitNorms();
     this.indexOptions = ref.indexOptions();
+    this.docValueType = ref.docValueType();
+    this.numericType = ref.numericType();
     // Do not copy frozen!
   }
   
@@ -51,7 +54,7 @@ public class FieldType implements Indexa
 
   private void checkIfFrozen() {
     if (frozen) {
-      throw new IllegalStateException();
+      throw new IllegalStateException("this FieldType is already frozen and cannot be changed");
     }
   }
 
@@ -146,6 +149,16 @@ public class FieldType implements Indexa
     return docValueType;
   }
 
+  public void setNumericType(NumericField.DataType type) {
+    checkIfFrozen();
+    numericType = type;
+  }
+
+  @Override
+  public NumericField.DataType numericType() {
+    return numericType;
+  }
+
   /** Prints a Field for human consumption. */
   @Override
   public final String toString() {

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/NumericField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/NumericField.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/NumericField.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/document/NumericField.java Wed Jan 11 20:39:42 2012
@@ -17,7 +17,6 @@ package org.apache.lucene.document;
  * limitations under the License.
  */
 
-import java.io.Reader;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
@@ -139,28 +138,51 @@ public final class NumericField extends 
    */
   public static enum DataType { INT, LONG, FLOAT, DOUBLE }
 
-  public static final FieldType TYPE_UNSTORED = new FieldType();
-  public static final FieldType TYPE_STORED = new FieldType();
-  static {
-    TYPE_UNSTORED.setIndexed(true);
-    TYPE_UNSTORED.setTokenized(true);
-    TYPE_UNSTORED.setOmitNorms(true);
-    TYPE_UNSTORED.setIndexOptions(IndexOptions.DOCS_ONLY);
-    TYPE_UNSTORED.freeze();
-
-    TYPE_STORED.setIndexed(true);
-    TYPE_STORED.setStored(true);
-    TYPE_STORED.setTokenized(true);
-    TYPE_STORED.setOmitNorms(true);
-    TYPE_STORED.setIndexOptions(IndexOptions.DOCS_ONLY);
-    TYPE_STORED.freeze();
-  }
-
-  //public static enum DataType { INT, LONG, FLOAT, DOUBLE }
-  
-  private DataType dataType;
   private transient NumericTokenStream numericTS;
   private final int precisionStep;
+
+  // nocommit -- we can precompute static array indexed by
+  // type.ord()?  and give them names ... TYPE_INT_STORED, etc.
+
+  /** @lucene.experimental */
+  public static FieldType getFieldType(DataType type, boolean stored) {
+    final FieldType ft = new FieldType();
+    ft.setIndexed(true);
+    ft.setStored(stored);
+    ft.setTokenized(true);
+    ft.setOmitNorms(true);
+    ft.setIndexOptions(IndexOptions.DOCS_ONLY);
+    ft.setNumericType(type);
+    ft.freeze();
+    return ft;
+  }
+
+  // nocommit: add sugar ctors taking native type value & inferring
+  // DataType from it...
+
+  /** Creates an int NumericField with the provided value. */
+  public NumericField(String name, int value) {
+    this(name, NumericUtils.PRECISION_STEP_DEFAULT, getFieldType(DataType.INT, false));
+    setIntValue(value);
+  }
+
+  /** Creates a long NumericField with the provided value. */
+  public NumericField(String name, long value) {
+    this(name, NumericUtils.PRECISION_STEP_DEFAULT, getFieldType(DataType.LONG, false));
+    setLongValue(value);
+  }
+
+  /** Creates a float NumericField with the provided value. */
+  public NumericField(String name, float value) {
+    this(name, NumericUtils.PRECISION_STEP_DEFAULT, getFieldType(DataType.FLOAT, false));
+    setFloatValue(value);
+  }
+
+  /** Creates a double NumericField with the provided value. */
+  public NumericField(String name, double value) {
+    this(name, NumericUtils.PRECISION_STEP_DEFAULT, getFieldType(DataType.DOUBLE, false));
+    setDoubleValue(value);
+  }
   
   /**
    * Creates a field for numeric values using the default
@@ -173,8 +195,8 @@ public final class NumericField extends 
    * @param name
    *          the field name
    */
-  public NumericField(String name) {
-    this(name, NumericUtils.PRECISION_STEP_DEFAULT, NumericField.TYPE_UNSTORED);
+  public NumericField(String name, DataType type) {
+    this(name, NumericUtils.PRECISION_STEP_DEFAULT, getFieldType(type, false));
   }
   
   /**
@@ -210,8 +232,8 @@ public final class NumericField extends 
    *          href="../search/NumericRangeQuery.html#precisionStepDesc"
    *          >precision step</a>
    */
-  public NumericField(String name, int precisionStep) {
-    this(name, precisionStep, NumericField.TYPE_UNSTORED);
+  public NumericField(String name, int precisionStep, DataType type) {
+    this(name, precisionStep, getFieldType(type, false));
   }
   
   /**
@@ -227,15 +249,19 @@ public final class NumericField extends 
    *          href="../search/NumericRangeQuery.html#precisionStepDesc"
    *          >precision step</a>
    * @param type
-   *          if the defualt field should be altered, e.g. stored, 
+   *          if the default field should be altered, e.g. stored, 
    *          {@link Document#getField} then returns {@code NumericField} 
    *          instances on search results, or indexed using 
    *          {@link NumericTokenStream}
    */
   public NumericField(String name, int precisionStep, FieldType type) {
     super(name, type);
-    if (precisionStep < 1)
+    if (type.numericType() == null) {
+      throw new IllegalArgumentException("FieldType.numericType() is null");
+    }
+    if (precisionStep < 1) {
       throw new IllegalArgumentException("precisionStep must be >=1");
+    }
     this.precisionStep = precisionStep;
   }
   
@@ -248,35 +274,27 @@ public final class NumericField extends 
       // if not needed (stored field loading)
       numericTS = new NumericTokenStream(precisionStep);
       // initialize value in TokenStream
-      if (fieldsData != null) {
-        assert dataType != null;
-        final Number val = (Number) fieldsData;
-        switch (dataType) {
-          case INT:
-            numericTS.setIntValue(val.intValue());
-            break;
-          case LONG:
-            numericTS.setLongValue(val.longValue());
-            break;
-          case FLOAT:
-            numericTS.setFloatValue(val.floatValue());
-            break;
-          case DOUBLE:
-            numericTS.setDoubleValue(val.doubleValue());
-            break;
-          default:
-            assert false : "Should never get here";
-        }
+      final Number val = (Number) fieldsData;
+      switch (type.numericType()) {
+      case INT:
+        numericTS.setIntValue(val.intValue());
+        break;
+      case LONG:
+        numericTS.setLongValue(val.longValue());
+        break;
+      case FLOAT:
+        numericTS.setFloatValue(val.floatValue());
+        break;
+      case DOUBLE:
+        numericTS.setDoubleValue(val.doubleValue());
+        break;
+      default:
+        assert false : "Should never get here";
       }
     }
     return numericTS;
   }
   
-  /** Returns always <code>null</code> for numeric fields */
-  public Reader readerValue() {
-    return null;
-  }
-  
   /**
    * Returns the numeric value as a string. It is recommended to
    * use {@link Document#getField} instead that returns {@code NumericField}
@@ -288,31 +306,12 @@ public final class NumericField extends 
     return (fieldsData == null) ? null : fieldsData.toString();
   }
   
-  /**
-   * Returns the current numeric value as a subclass of {@link Number},
-   * <code>null</code> if not yet initialized.
-   */
-  @Override
-  public Number numericValue() {
-    return (Number) fieldsData;
-  }
-  
   /** Returns the precision step. */
   public int getPrecisionStep() {
     return precisionStep;
   }
   
   /**
-   * Returns the data type of the current value, {@code null} if not yet set.
-   * 
-   * @since 3.2
-   */
-  @Override
-  public DataType numericDataType() {
-    return dataType;
-  }
-
-  /**
    * Initializes the field with the supplied <code>long</code> value.
    * 
    * @param value
@@ -321,9 +320,11 @@ public final class NumericField extends 
    *         <code>document.add(new NumericField(name, precisionStep).setLongValue(value))</code>
    */
   public NumericField setLongValue(final long value) {
+    if (type.numericType() != DataType.LONG) {
+      throw new IllegalArgumentException("cannot set long value when FieldType.numericType() is " + type.numericType());
+    }
     if (numericTS != null) numericTS.setLongValue(value);
     fieldsData = Long.valueOf(value);
-    dataType = DataType.LONG;
     return this;
   }
   
@@ -336,9 +337,11 @@ public final class NumericField extends 
    *         <code>document.add(new NumericField(name, precisionStep).setIntValue(value))</code>
    */
   public NumericField setIntValue(final int value) {
+    if (type.numericType() != DataType.INT) {
+      throw new IllegalArgumentException("cannot set int value when FieldType.numericType() is " + type.numericType());
+    }
     if (numericTS != null) numericTS.setIntValue(value);
     fieldsData = Integer.valueOf(value);
-    dataType = DataType.INT;
     return this;
   }
   
@@ -351,9 +354,11 @@ public final class NumericField extends 
    *         <code>document.add(new NumericField(name, precisionStep).setDoubleValue(value))</code>
    */
   public NumericField setDoubleValue(final double value) {
+    if (type.numericType() != DataType.DOUBLE) {
+      throw new IllegalArgumentException("cannot set double value when FieldType.numericType() is " + type.numericType());
+    }
     if (numericTS != null) numericTS.setDoubleValue(value);
     fieldsData = Double.valueOf(value);
-    dataType = DataType.DOUBLE;
     return this;
   }
   
@@ -366,10 +371,11 @@ public final class NumericField extends 
    *         <code>document.add(new NumericField(name, precisionStep).setFloatValue(value))</code>
    */
   public NumericField setFloatValue(final float value) {
+    if (type.numericType() != DataType.FLOAT) {
+      throw new IllegalArgumentException("cannot set float value when FieldType.numericType() is " + type.numericType());
+    }
     if (numericTS != null) numericTS.setFloatValue(value);
     fieldsData = Float.valueOf(value);
-    dataType = DataType.FLOAT;
     return this;
   }
-  
 }

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableField.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableField.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableField.java Wed Jan 11 20:39:42 2012
@@ -22,7 +22,6 @@ import java.io.Reader;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.document.NumericField;
 import org.apache.lucene.util.BytesRef;
 
 // TODO: how to handle versioning here...?
@@ -36,14 +35,13 @@ import org.apache.lucene.util.BytesRef;
 
 public interface IndexableField {
 
-  // TODO: add attrs to this API?
-
   /** Field name */
   public String name();
 
-  // NOTE: if doc/field impl has the notion of "doc level boost"
-  // it must be multiplied in w/ this field's boost
-
+  /** {@link IndexableFieldType} describing the properties
+   * of this field. */
+  public IndexableFieldType fieldType();
+  
   /** Field boost (you must pre-multiply in any doc boost). */
   public float boost();
 
@@ -56,23 +54,9 @@ public interface IndexableField {
   /** Non-null if this field has a Reader value */
   public Reader readerValue();
 
-  /** Numeric value; only used if the field is numeric
-   * (returns non-null result from {@link
-   * #numericDataType}. */
+  /** Non-null if this field hasa numeric value */
   public Number numericValue();
 
-  /** Numeric {@link org.apache.lucene.document.NumericField.DataType}; only used if
-   * the field is numeric */
-  // nocommit move to IFT...?
-  public NumericField.DataType numericDataType();
-
-  /**
-   * Returns the IndexableFieldType describing the properties of this field
-   *
-   * @return IndexableFieldType for this field
-   */
-  public IndexableFieldType fieldType();
-  
   /**
    * Creates the TokenStream used for indexing this field.  If appropriate,
    * implementations should use the given Analyzer to create the TokenStreams.

Modified: lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableFieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableFieldType.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableFieldType.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/java/org/apache/lucene/index/IndexableFieldType.java Wed Jan 11 20:39:42 2012
@@ -19,6 +19,9 @@ package org.apache.lucene.index;
 
 import org.apache.lucene.index.FieldInfo.IndexOptions;
 
+// nocommit we should pull the NF.DataType into index package?
+import org.apache.lucene.document.NumericField;
+
 /** @lucene.experimental */
 public interface IndexableFieldType {
 
@@ -50,4 +53,9 @@ public interface IndexableFieldType {
   /** DocValues type; if non-null then the field's value
    *  will be indexed into docValues */
   public DocValues.Type docValueType();
+
+  /** Numeric {@link NumericField.DataType}; if
+   * non-null then the field's value will be indexed
+   * numerically. */
+  public NumericField.DataType numericType();
 }

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/codecs/lucene40/TestDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/codecs/lucene40/TestDocValues.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/codecs/lucene40/TestDocValues.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/codecs/lucene40/TestDocValues.java Wed Jan 11 20:39:42 2012
@@ -27,7 +27,6 @@ import org.apache.lucene.codecs.DocValue
 import org.apache.lucene.codecs.lucene40.values.Bytes;
 import org.apache.lucene.codecs.lucene40.values.Floats;
 import org.apache.lucene.codecs.lucene40.values.Ints;
-import org.apache.lucene.document.NumericField;
 import org.apache.lucene.index.DocValues.SortedSource;
 import org.apache.lucene.index.DocValues.Source;
 import org.apache.lucene.index.DocValues.Type;
@@ -461,6 +460,7 @@ public class TestDocValues extends Lucen
       return bytes;
     }
 
+    // nocommit
     /*
     @Override
     public Comparator<BytesRef> bytesComparator() {
@@ -487,10 +487,5 @@ public class TestDocValues extends Lucen
     public IndexableFieldType fieldType() {
       return null;
     }
-
-    @Override
-    public NumericField.DataType numericDataType() {
-      return null;
-    }
   }
 }

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Wed Jan 11 20:39:42 2012
@@ -29,8 +29,6 @@ import java.util.Map;
 import java.util.Random;
 
 import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.FieldInfosReader;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
@@ -45,9 +43,7 @@ import org.apache.lucene.search.IndexSea
 import org.apache.lucene.search.NumericRangeQuery;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.CompoundFileDirectory;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.RAMDirectory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
@@ -544,8 +540,8 @@ public class TestBackwardsCompatibility 
     doc.add(new Field("content2", "here is more content with aaa aaa aaa", customType2));
     doc.add(new Field("fie\u2C77ld", "field with non-ascii name", customType2));
     // add numeric fields, to test if flex preserves encoding
-    doc.add(new NumericField("trieInt", 4).setIntValue(id));
-    doc.add(new NumericField("trieLong", 4).setLongValue(id));
+    doc.add(new NumericField("trieInt", 4, NumericField.DataType.INT).setIntValue(id));
+    doc.add(new NumericField("trieLong", 4, NumericField.DataType.LONG).setLongValue(id));
     writer.addDocument(doc);
   }
 

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDocTermOrds.java Wed Jan 11 20:39:42 2012
@@ -124,8 +124,7 @@ public class TestDocTermOrds extends Luc
     for(int id=0;id<NUM_DOCS;id++) {
       Document doc = new Document();
 
-      NumericField idField = new NumericField("id");
-      doc.add(idField.setIntValue(id));
+      doc.add(new NumericField("id", id));
       
       final int termCount = _TestUtil.nextInt(random, 0, 20*RANDOM_MULTIPLIER);
       while(ordsForDocSet.size() < termCount) {
@@ -221,8 +220,7 @@ public class TestDocTermOrds extends Luc
     for(int id=0;id<NUM_DOCS;id++) {
       Document doc = new Document();
 
-      NumericField idField = new NumericField("id");
-      doc.add(idField.setIntValue(id));
+      doc.add(new NumericField("id", id));
       
       final int termCount = _TestUtil.nextInt(random, 0, 20*RANDOM_MULTIPLIER);
       while(ordsForDocSet.size() < termCount) {

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java Wed Jan 11 20:39:42 2012
@@ -500,7 +500,7 @@ public class TestDuelingCodecs extends L
     assertEquals(info, leftField.binaryValue(), rightField.binaryValue());
     assertEquals(info, leftField.stringValue(), rightField.stringValue());
     assertEquals(info, leftField.numericValue(), rightField.numericValue());
-    assertEquals(info, leftField.numericDataType(), rightField.numericDataType());
+    assertEquals(info, leftField.fieldType().numericType(), rightField.fieldType().numericType());
     // TODO: should we check the FT at all?
   }
   

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java Wed Jan 11 20:39:42 2012
@@ -237,19 +237,20 @@ public class TestFieldsReader extends Lu
     final NumericField.DataType[] typeAnswers = new NumericField.DataType[numDocs];
     for(int id=0;id<numDocs;id++) {
       Document doc = new Document();
-      NumericField nf = new NumericField("nf", NumericField.TYPE_STORED);
-      doc.add(nf);
+      final NumericField nf;
       final Number answer;
       final NumericField.DataType typeAnswer;
       if (random.nextBoolean()) {
         // float/double
         if (random.nextBoolean()) {
           final float f = random.nextFloat();
+          nf = new NumericField("nf", NumericField.getFieldType(NumericField.DataType.FLOAT, true));
           nf.setFloatValue(f);
           answer = Float.valueOf(f);
           typeAnswer = NumericField.DataType.FLOAT;
         } else {
           final double d = random.nextDouble();
+          nf = new NumericField("nf", NumericField.getFieldType(NumericField.DataType.DOUBLE, true));
           nf.setDoubleValue(d);
           answer = Double.valueOf(d);
           typeAnswer = NumericField.DataType.DOUBLE;
@@ -258,19 +259,22 @@ public class TestFieldsReader extends Lu
         // int/long
         if (random.nextBoolean()) {
           final int i = random.nextInt();
+          nf = new NumericField("nf", NumericField.getFieldType(NumericField.DataType.INT, true));
           nf.setIntValue(i);
           answer = Integer.valueOf(i);
           typeAnswer = NumericField.DataType.INT;
         } else {
           final long l = random.nextLong();
+          nf = new NumericField("nf", NumericField.getFieldType(NumericField.DataType.LONG, true));
           nf.setLongValue(l);
           answer = Long.valueOf(l);
           typeAnswer = NumericField.DataType.LONG;
         }
       }
+      doc.add(nf);
       answers[id] = answer;
       typeAnswers[id] = typeAnswer;
-      doc.add(new NumericField("id", Integer.MAX_VALUE).setIntValue(id));
+      doc.add(new NumericField("id", Integer.MAX_VALUE, NumericField.DataType.INT).setIntValue(id));
       w.addDocument(doc);
     }
     final IndexReader r = w.getReader();
@@ -286,7 +290,7 @@ public class TestFieldsReader extends Lu
         assertTrue("got f=" + f, f instanceof NumericField);
         final NumericField nf = (NumericField) f;
         assertEquals(answers[ids[docID]], nf.numericValue());
-        assertSame(typeAnswers[ids[docID]], nf.numericDataType());
+        assertSame(typeAnswers[ids[docID]], nf.fieldType().numericType());
       }
     }
     r.close();

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestIndexableField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestIndexableField.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestIndexableField.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestIndexableField.java Wed Jan 11 20:39:42 2012
@@ -89,6 +89,11 @@ public class TestIndexableField extends 
       public DocValues.Type docValueType() {
         return null;
       }
+
+      @Override
+      public NumericField.DataType numericType() {
+        return counter%10 == 9 ? DataType.INT : null;
+      }
     };
 
     public MyField(int counter) {
@@ -137,12 +142,6 @@ public class TestIndexableField extends 
       }
     }
 
-    // Numeric field:
-    @Override
-    public DataType numericDataType() {
-      return counter%10 == 9 ? DataType.INT : null;
-    }
-
     @Override
     public Number numericValue() {
       return counter;
@@ -155,8 +154,8 @@ public class TestIndexableField extends 
 
     @Override
     public TokenStream tokenStream(Analyzer analyzer) throws IOException {
-      if (numericDataType() != null) {
-        return new NumericField(name()).setIntValue(counter).tokenStream(analyzer);
+      if (fieldType().numericType() != null) {
+        return new NumericField(name(), counter).tokenStream(analyzer);
       } else {
         return readerValue() != null ? analyzer.tokenStream(name(), readerValue()) :
           analyzer.tokenStream(name(), new StringReader(stringValue()));
@@ -266,7 +265,7 @@ public class TestIndexableField extends 
           } else if (numeric) {
             assertTrue(f instanceof NumericField);
             final NumericField nf = (NumericField) f;
-            assertEquals(NumericField.DataType.INT, nf.numericDataType());
+            assertEquals(NumericField.DataType.INT, nf.fieldType().numericType());
             assertEquals(counter, nf.numericValue().intValue());
           } else {
             assert stringValue != null;

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestTermsEnum.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestTermsEnum.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/index/TestTermsEnum.java Wed Jan 11 20:39:42 2012
@@ -164,7 +164,7 @@ public class TestTermsEnum extends Lucen
 
   private void addDoc(RandomIndexWriter w, Collection<String> terms, Map<BytesRef,Integer> termToID, int id) throws IOException {
     Document doc = new Document();
-    doc.add(new NumericField("id").setIntValue(id));
+    doc.add(new NumericField("id", id));
     if (VERBOSE) {
       System.out.println("TEST: addDoc id:" + id + " terms=" + terms);
     }

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestFieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestFieldCache.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestFieldCache.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestFieldCache.java Wed Jan 11 20:39:42 2012
@@ -78,7 +78,7 @@ public class TestFieldCache extends Luce
       }
 
       if (i%2 == 0) {
-        doc.add(new NumericField("numInt").setIntValue(i));
+        doc.add(new NumericField("numInt", i));
       }
 
       // sometimes skip the field:

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestMultiValuedNumericRangeQuery.java Wed Jan 11 20:39:42 2012
@@ -52,7 +52,7 @@ public class TestMultiValuedNumericRange
       for (int m=0, c=random.nextInt(10); m<=c; m++) {
         int value = random.nextInt(Integer.MAX_VALUE);
         doc.add(newField("asc", format.format(value), StringField.TYPE_UNSTORED));
-        doc.add(new NumericField("trie").setIntValue(value));
+        doc.add(new NumericField("trie", value));
       }
       writer.addDocument(doc);
     }

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java Wed Jan 11 20:39:42 2012
@@ -60,13 +60,14 @@ public class TestNumericRangeQuery32 ext
         .setMergePolicy(newLogMergePolicy()));
   
     NumericField
-	    field8 = new NumericField("field8", 8, NumericField.TYPE_STORED),
-	    field4 = new NumericField("field4", 4, NumericField.TYPE_STORED),
-	    field2 = new NumericField("field2", 2, NumericField.TYPE_STORED),
-	    fieldNoTrie = new NumericField("field"+Integer.MAX_VALUE, Integer.MAX_VALUE, rarely() ? NumericField.TYPE_STORED : NumericField.TYPE_UNSTORED),
-	    ascfield8 = new NumericField("ascfield8", 8, NumericField.TYPE_UNSTORED),
-	    ascfield4 = new NumericField("ascfield4", 4, NumericField.TYPE_UNSTORED),
-	    ascfield2 = new NumericField("ascfield2", 2, NumericField.TYPE_UNSTORED);
+	    field8 = new NumericField("field8", 8, NumericField.getFieldType(NumericField.DataType.INT, true)),
+	    field4 = new NumericField("field4", 4, NumericField.getFieldType(NumericField.DataType.INT, true)),
+	    field2 = new NumericField("field2", 2, NumericField.getFieldType(NumericField.DataType.INT, true)),
+	    fieldNoTrie = new NumericField("field"+Integer.MAX_VALUE, Integer.MAX_VALUE,
+                                           NumericField.getFieldType(NumericField.DataType.INT, rarely())),
+	    ascfield8 = new NumericField("ascfield8", 8, NumericField.DataType.INT),
+	    ascfield4 = new NumericField("ascfield4", 4, NumericField.DataType.INT),
+	    ascfield2 = new NumericField("ascfield2", 2, NumericField.DataType.INT);
     
     Document doc = new Document();
     // add fields, that have a distance to test general functionality
@@ -273,23 +274,23 @@ public class TestNumericRangeQuery32 ext
     RandomIndexWriter writer = new RandomIndexWriter(random, dir,
       newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random)));
     Document doc = new Document();
-    doc.add(new NumericField("float").setFloatValue(Float.NEGATIVE_INFINITY));
-    doc.add(new NumericField("int").setIntValue(Integer.MIN_VALUE));
+    doc.add(new NumericField("float", Float.NEGATIVE_INFINITY));
+    doc.add(new NumericField("int", Integer.MIN_VALUE));
     writer.addDocument(doc);
     
     doc = new Document();
-    doc.add(new NumericField("float").setFloatValue(Float.POSITIVE_INFINITY));
-    doc.add(new NumericField("int").setIntValue(Integer.MAX_VALUE));
+    doc.add(new NumericField("float", Float.POSITIVE_INFINITY));
+    doc.add(new NumericField("int", Integer.MAX_VALUE));
     writer.addDocument(doc);
     
     doc = new Document();
-    doc.add(new NumericField("float").setFloatValue(0.0f));
-    doc.add(new NumericField("int").setIntValue(0));
+    doc.add(new NumericField("float", 0.0f));
+    doc.add(new NumericField("int", 0));
     writer.addDocument(doc);
     
     for (float f : TestNumericUtils.FLOAT_NANs) {
       doc = new Document();
-      doc.add(new NumericField("float").setFloatValue(f));
+      doc.add(new NumericField("float", f));
       writer.addDocument(doc);
     }
     

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery64.java Wed Jan 11 20:39:42 2012
@@ -60,15 +60,17 @@ public class TestNumericRangeQuery64 ext
         .setMergePolicy(newLogMergePolicy()));
     
     NumericField
-      field8 = new NumericField("field8", 8, NumericField.TYPE_STORED),
-      field6 = new NumericField("field6", 6, NumericField.TYPE_STORED),
-      field4 = new NumericField("field4", 4, NumericField.TYPE_STORED),
-      field2 = new NumericField("field2", 2, NumericField.TYPE_STORED),
-      fieldNoTrie = new NumericField("field"+Integer.MAX_VALUE, Integer.MAX_VALUE, rarely() ? NumericField.TYPE_STORED : NumericField.TYPE_UNSTORED),
-      ascfield8 = new NumericField("ascfield8", 8, NumericField.TYPE_UNSTORED),
-      ascfield6 = new NumericField("ascfield6", 6, NumericField.TYPE_UNSTORED),
-      ascfield4 = new NumericField("ascfield4", 4, NumericField.TYPE_UNSTORED),
-      ascfield2 = new NumericField("ascfield2", 2, NumericField.TYPE_UNSTORED);
+      field8 = new NumericField("field8", 8, NumericField.getFieldType(NumericField.DataType.LONG, true)),
+      field6 = new NumericField("field6", 6, NumericField.getFieldType(NumericField.DataType.LONG, true)),
+      field4 = new NumericField("field4", 4, NumericField.getFieldType(NumericField.DataType.LONG, true)),
+      field2 = new NumericField("field2", 2, NumericField.getFieldType(NumericField.DataType.LONG, true)),
+      fieldNoTrie = new NumericField("field"+Integer.MAX_VALUE, Integer.MAX_VALUE,
+                                     NumericField.getFieldType(NumericField.DataType.LONG, rarely())),
+
+      ascfield8 = new NumericField("ascfield8", 8, NumericField.DataType.LONG),
+      ascfield6 = new NumericField("ascfield6", 6, NumericField.DataType.LONG),
+      ascfield4 = new NumericField("ascfield4", 4, NumericField.DataType.LONG),
+      ascfield2 = new NumericField("ascfield2", 2, NumericField.DataType.LONG);
     
     Document doc = new Document();
     // add fields, that have a distance to test general functionality
@@ -292,23 +294,23 @@ public class TestNumericRangeQuery64 ext
     RandomIndexWriter writer = new RandomIndexWriter(random, dir,
       newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)));
     Document doc = new Document();
-    doc.add(new NumericField("double").setDoubleValue(Double.NEGATIVE_INFINITY));
-    doc.add(new NumericField("long").setLongValue(Long.MIN_VALUE));
+    doc.add(new NumericField("double", Double.NEGATIVE_INFINITY));
+    doc.add(new NumericField("long", Long.MIN_VALUE));
     writer.addDocument(doc);
     
     doc = new Document();
-    doc.add(new NumericField("double").setDoubleValue(Double.POSITIVE_INFINITY));
-    doc.add(new NumericField("long").setLongValue(Long.MAX_VALUE));
+    doc.add(new NumericField("double", Double.POSITIVE_INFINITY));
+    doc.add(new NumericField("long", Long.MAX_VALUE));
     writer.addDocument(doc);
     
     doc = new Document();
-    doc.add(new NumericField("double").setDoubleValue(0.0));
-    doc.add(new NumericField("long").setLongValue(0L));
+    doc.add(new NumericField("double", 0.0));
+    doc.add(new NumericField("long", 0L));
     writer.addDocument(doc);
     
     for (double d : TestNumericUtils.DOUBLE_NANs) {
       doc = new Document();
-      doc.add(new NumericField("double").setDoubleValue(d));
+      doc.add(new NumericField("double", d));
       writer.addDocument(doc);
     }
     

Modified: lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestTopDocsMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestTopDocsMerge.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestTopDocsMerge.java (original)
+++ lucene/dev/branches/lucene3453/lucene/src/test/org/apache/lucene/search/TestTopDocsMerge.java Wed Jan 11 20:39:42 2012
@@ -93,7 +93,7 @@ public class TestTopDocsMerge extends Lu
         final Document doc = new Document();
         doc.add(newField("string", _TestUtil.randomRealisticUnicodeString(random), StringField.TYPE_UNSTORED));
         doc.add(newField("text", content[random.nextInt(content.length)], TextField.TYPE_UNSTORED));
-        doc.add(new NumericField("float").setFloatValue(random.nextFloat()));
+        doc.add(new NumericField("float", random.nextFloat()));
         final int intValue;
         if (random.nextInt(100) == 17) {
           intValue = Integer.MIN_VALUE;
@@ -102,7 +102,7 @@ public class TestTopDocsMerge extends Lu
         } else {
           intValue = random.nextInt();
         }
-        doc.add(new NumericField("int").setIntValue(intValue));
+        doc.add(new NumericField("int", intValue));
         if (VERBOSE) {
           System.out.println("  doc=" + doc);
         }

Modified: lucene/dev/branches/lucene3453/modules/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/DocMaker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/modules/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/DocMaker.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/modules/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/DocMaker.java (original)
+++ lucene/dev/branches/lucene3453/modules/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/DocMaker.java Wed Jan 11 20:39:42 2012
@@ -109,8 +109,8 @@ public class DocMaker implements Closeab
         fields.put(ID_FIELD, new Field(ID_FIELD, "", StringField.TYPE_STORED));
         fields.put(NAME_FIELD, new Field(NAME_FIELD, "", ft));
 
-        numericFields.put(DATE_MSEC_FIELD, new NumericField(DATE_MSEC_FIELD));
-        numericFields.put(TIME_SEC_FIELD, new NumericField(TIME_SEC_FIELD));
+        numericFields.put(DATE_MSEC_FIELD, new NumericField(DATE_MSEC_FIELD, NumericField.DataType.LONG));
+        numericFields.put(TIME_SEC_FIELD, new NumericField(TIME_SEC_FIELD, NumericField.DataType.INT));
         
         doc = new Document();
       } else {
@@ -138,14 +138,14 @@ public class DocMaker implements Closeab
       return f;
     }
 
-    NumericField getNumericField(String name) {
+    NumericField getNumericField(String name, NumericField.DataType type) {
       if (!reuseFields) {
-        return new NumericField(name);
+        return new NumericField(name, type);
       }
 
       NumericField f = numericFields.get(name);
       if (f == null) {
-        f = new NumericField(name);
+        f = new NumericField(name, type);
         numericFields.put(name, f);
       }
       return f;
@@ -249,14 +249,14 @@ public class DocMaker implements Closeab
       date = new Date();
     }
 
-    NumericField dateField = ds.getNumericField(DATE_MSEC_FIELD);
+    NumericField dateField = ds.getNumericField(DATE_MSEC_FIELD, NumericField.DataType.LONG);
     dateField.setLongValue(date.getTime());
     doc.add(dateField);
 
     util.cal.setTime(date);
     final int sec = util.cal.get(Calendar.HOUR_OF_DAY)*3600 + util.cal.get(Calendar.MINUTE)*60 + util.cal.get(Calendar.SECOND);
 
-    NumericField timeSecField = ds.getNumericField(TIME_SEC_FIELD);
+    NumericField timeSecField = ds.getNumericField(TIME_SEC_FIELD, NumericField.DataType.INT);
     timeSecField.setIntValue(sec);
     doc.add(timeSecField);
     

Modified: lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java (original)
+++ lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/AllGroupHeadsCollectorTest.java Wed Jan 11 20:39:42 2012
@@ -226,7 +226,7 @@ public class AllGroupHeadsCollectorTest 
       Field content = newField("content", "", TextField.TYPE_UNSTORED);
       doc.add(content);
       docNoGroup.add(content);
-      NumericField id = new NumericField("id");
+      NumericField id = new NumericField("id", NumericField.DataType.INT);
       doc.add(id);
       docNoGroup.add(id);
       final GroupDoc[] groupDocs = new GroupDoc[numDocs];

Modified: lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java (original)
+++ lucene/dev/branches/lucene3453/modules/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java Wed Jan 11 20:39:42 2012
@@ -593,7 +593,7 @@ public class TestGrouping extends Lucene
         }
         doc.add(newField("sort1", groupValue.sort1.utf8ToString(), StringField.TYPE_UNSTORED));
         doc.add(newField("sort2", groupValue.sort2.utf8ToString(), StringField.TYPE_UNSTORED));
-        doc.add(new NumericField("id").setIntValue(groupValue.id));
+        doc.add(new NumericField("id", groupValue.id));
         doc.add(newField("content", groupValue.content, TextField.TYPE_UNSTORED));
         //System.out.println("TEST:     doc content=" + groupValue.content + " group=" + (groupValue.group == null ? "null" : groupValue.group.utf8ToString()) + " sort1=" + groupValue.sort1.utf8ToString() + " id=" + groupValue.id);
       }
@@ -721,7 +721,7 @@ public class TestGrouping extends Lucene
       Field content = newField("content", "", TextField.TYPE_UNSTORED);
       doc.add(content);
       docNoGroup.add(content);
-      NumericField id = new NumericField("id");
+      NumericField id = new NumericField("id", NumericField.DataType.INT);
       doc.add(id);
       docNoGroup.add(id);
       final GroupDoc[] groupDocs = new GroupDoc[numDocs];

Modified: lucene/dev/branches/lucene3453/modules/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/modules/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/modules/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java (original)
+++ lucene/dev/branches/lucene3453/modules/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java Wed Jan 11 20:39:42 2012
@@ -34,8 +34,6 @@ import org.apache.lucene.search.*;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.grouping.GroupDocs;
 import org.apache.lucene.search.grouping.TopGroups;
-import org.apache.lucene.search.join.BlockJoinCollector;
-import org.apache.lucene.search.join.BlockJoinQuery;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
@@ -57,7 +55,7 @@ public class TestBlockJoin extends Lucen
   private Document makeJob(String skill, int year) {
     Document job = new Document();
     job.add(newField("skill", skill, StringField.TYPE_STORED));
-    job.add(new NumericField("year").setIntValue(year));
+    job.add(new NumericField("year", year));
     return job;
   }
 
@@ -65,7 +63,7 @@ public class TestBlockJoin extends Lucen
   private Document makeQualification(String qualification, int year) {
     Document job = new Document();
     job.add(newField("qualification", qualification, StringField.TYPE_STORED));
-    job.add(new NumericField("year").setIntValue(year));
+    job.add(new NumericField("year", year));
     return job;
   }
 

Modified: lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java (original)
+++ lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestNumericQueryParser.java Wed Jan 11 20:39:42 2012
@@ -193,7 +193,7 @@ public class TestNumericQueryParser exte
       numericConfigMap.put(type.name(), new NumericConfig(PRECISION_STEP,
           NUMBER_FORMAT, type));
       
-      NumericField field = new NumericField(type.name(), PRECISION_STEP, NumericField.TYPE_STORED);
+      NumericField field = new NumericField(type.name(), PRECISION_STEP, NumericField.getFieldType(type, true));
       
       numericFieldMap.put(type.name(), field);
       doc.add(field);
@@ -202,7 +202,7 @@ public class TestNumericQueryParser exte
     
     numericConfigMap.put(DATE_FIELD_NAME, new NumericConfig(PRECISION_STEP,
         DATE_FORMAT, NumericField.DataType.LONG));
-    NumericField dateField = new NumericField(DATE_FIELD_NAME, PRECISION_STEP, NumericField.TYPE_STORED);
+    NumericField dateField = new NumericField(DATE_FIELD_NAME, PRECISION_STEP, NumericField.getFieldType(NumericField.DataType.LONG, true));
     numericFieldMap.put(DATE_FIELD_NAME, dateField);
     doc.add(dateField);
     

Modified: lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java (original)
+++ lucene/dev/branches/lucene3453/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestParser.java Wed Jan 11 20:39:42 2012
@@ -68,9 +68,7 @@ public class TestParser extends LuceneTe
       Document doc = new Document();
       doc.add(newField("date", date, TextField.TYPE_STORED));
       doc.add(newField("contents", content, TextField.TYPE_STORED));
-      NumericField numericField = new NumericField("date2");
-      numericField.setIntValue(Integer.valueOf(date));
-      doc.add(numericField);
+      doc.add(new NumericField("date2", Integer.valueOf(date)));
       writer.addDocument(doc);
       line = d.readLine();
     }

Modified: lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/schema/TrieField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/schema/TrieField.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/schema/TrieField.java (original)
+++ lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/schema/TrieField.java Wed Jan 11 20:39:42 2012
@@ -104,7 +104,7 @@ public class TrieField extends org.apach
 
   @Override
   public Object toObject(IndexableField f) {
-    if (f.numericDataType() != null) {
+    if (f.fieldType().numericType() != null) {
       final Number val = f.numericValue();
       if (val==null) return badFieldString(f);
       return (type == TrieTypes.DATE) ? new Date(val.longValue()) : val;
@@ -481,8 +481,29 @@ public class TrieField extends org.apach
     ft.setIndexed(indexed);
     ft.setOmitNorms(field.omitNorms());
     ft.setIndexOptions(getIndexOptions(field, value.toString()));
-    
+
+    switch (type) {
+      case INTEGER:
+        ft.setNumericType(NumericField.DataType.INT);
+        break;
+      case FLOAT:
+        ft.setNumericType(NumericField.DataType.FLOAT);
+        break;
+      case LONG:
+        ft.setNumericType(NumericField.DataType.LONG);
+        break;
+      case DOUBLE:
+        ft.setNumericType(NumericField.DataType.DOUBLE);
+        break;
+      case DATE:
+        ft.setNumericType(NumericField.DataType.LONG);
+        break;
+      default:
+        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type for trie field: " + type);
+    }
+
     final org.apache.lucene.document.NumericField f = new org.apache.lucene.document.NumericField(field.getName(), precisionStep, ft);
+
     switch (type) {
       case INTEGER:
         int i = (value instanceof Number)

Modified: lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1230237&r1=1230236&r2=1230237&view=diff
==============================================================================
--- lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/branches/lucene3453/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java Wed Jan 11 20:39:42 2012
@@ -434,28 +434,28 @@ public class SolrIndexSearcher extends I
 
     @Override
     public void intField(FieldInfo fieldInfo, int value) {
-      FieldType ft = new FieldType(NumericField.TYPE_STORED);
+      FieldType ft = new FieldType(NumericField.getFieldType(NumericField.DataType.INT, true));
       ft.setIndexed(fieldInfo.isIndexed);
       doc.add(new NumericField(fieldInfo.name, ft).setIntValue(value));
     }
 
     @Override
     public void longField(FieldInfo fieldInfo, long value) {
-      FieldType ft = new FieldType(NumericField.TYPE_STORED);
+      FieldType ft = new FieldType(NumericField.getFieldType(NumericField.DataType.LONG, true));
       ft.setIndexed(fieldInfo.isIndexed);
       doc.add(new NumericField(fieldInfo.name, ft).setLongValue(value));
     }
 
     @Override
     public void floatField(FieldInfo fieldInfo, float value) {
-      FieldType ft = new FieldType(NumericField.TYPE_STORED);
+      FieldType ft = new FieldType(NumericField.getFieldType(NumericField.DataType.FLOAT, true));
       ft.setIndexed(fieldInfo.isIndexed);
       doc.add(new NumericField(fieldInfo.name, ft).setFloatValue(value));
     }
 
     @Override
     public void doubleField(FieldInfo fieldInfo, double value) {
-      FieldType ft = new FieldType(NumericField.TYPE_STORED);
+      FieldType ft = new FieldType(NumericField.getFieldType(NumericField.DataType.DOUBLE, true));
       ft.setIndexed(fieldInfo.isIndexed);
       doc.add(new NumericField(fieldInfo.name, ft).setDoubleValue(value));
     }