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));
}