Class LegacyIntField

java.lang.Object
org.apache.lucene.document.Field
org.apache.solr.legacy.LegacyField
org.apache.solr.legacy.LegacyIntField
All Implemented Interfaces:
org.apache.lucene.index.IndexableField

@Deprecated public final class LegacyIntField extends LegacyField
Deprecated.
Please use IntPoint instead
Field that indexes int values for efficient range filtering and sorting. Here's an example usage:
 document.add(new LegacyIntField(name, 6, Field.Store.NO));
 
For optimal performance, re-use the LegacyIntField and Document instance for more than one document:
  LegacyIntField field = new LegacyIntField(name, 6, Field.Store.NO);
  Document document = new Document();
  document.add(field);

  for(all documents) {
    ...
    field.setIntValue(value)
    writer.addDocument(document);
    ...
  }
 
See also LegacyLongField, LegacyFloatField, LegacyDoubleField.

To perform range querying or filtering against a LegacyIntField, use LegacyNumericRangeQuery. To sort according to a LegacyIntField , use the normal numeric sort types, eg SortField.Type.INT. LegacyIntField values can also be loaded directly from LeafReader.getNumericDocValues(java.lang.String).

You may add the same field name as an LegacyIntField to the same document more than once. Range querying and filtering will be the logical OR of all values; so a range query will hit all documents that have at least one value in the range. However sort behavior is not defined. If you need to sort, you should separately index a single-valued LegacyIntField .

An LegacyIntField will consume somewhat more disk space in the index than an ordinary single-valued field. However, for a typical index that includes substantial textual content per document, this increase will likely be in the noise.

Within Lucene, each numeric value is indexed as a trie structure, where each term is logically assigned to larger and larger pre-defined brackets (which are simply lower-precision representations of the value). The step size between each successive bracket is called the precisionStep, measured in bits. Smaller precisionStep values result in larger number of brackets, which consumes more disk space in the index but may result in faster range search performance. The default value, 8, was selected for a reasonable tradeoff of disk space consumption versus performance. You can create a custom LegacyFieldType and invoke the LegacyFieldType.setNumericPrecisionStep(int) method if you'd like to change the value. Note that you must also specify a congruent value when creating LegacyNumericRangeQuery. For low cardinality fields larger precision steps are good. If the cardinality is < 100, it is fair to use Integer.MAX_VALUE, which produces one term per value.

For more information on the internals of numeric trie indexing, including the precisionStep configuration, see LegacyNumericRangeQuery. The format of indexed values is described in LegacyNumericUtils.

If you only need to sort by numeric value, and never run range querying/filtering, you can index using a precisionStep of Integer.MAX_VALUE. This will minimize disk space consumed.

More advanced users can instead use LegacyNumericTokenStream directly, when indexing numbers. This class is a wrapper around this token stream type for easier, more intuitive usage.

Since:
2.9
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.apache.lucene.document.Field

    org.apache.lucene.document.Field.Store
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final LegacyFieldType
    Deprecated.
    Type for an LegacyIntField that is not stored: normalization factors, frequencies, and positions are omitted.
    static final LegacyFieldType
    Deprecated.
    Type for a stored LegacyIntField: normalization factors, frequencies, and positions are omitted.

    Fields inherited from class org.apache.lucene.document.Field

    fieldsData, name, type
  • Constructor Summary

    Constructors
    Constructor
    Description
    LegacyIntField(String name, int value, org.apache.lucene.document.Field.Store stored)
    Deprecated.
    Creates a stored or un-stored LegacyIntField with the provided value and default precisionStep LegacyNumericUtils.PRECISION_STEP_DEFAULT_32 (8).
    LegacyIntField(String name, int value, LegacyFieldType type)
    Deprecated.
    Expert: allows you to customize the LegacyFieldType.
  • Method Summary

    Methods inherited from class org.apache.solr.legacy.LegacyField

    setTokenStream, tokenStream

    Methods inherited from class org.apache.lucene.document.Field

    binaryValue, fieldType, getCharSequenceValue, invertableType, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, storedValue, stringValue, tokenStreamValue, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • TYPE_NOT_STORED

      public static final LegacyFieldType TYPE_NOT_STORED
      Deprecated.
      Type for an LegacyIntField that is not stored: normalization factors, frequencies, and positions are omitted.
    • TYPE_STORED

      public static final LegacyFieldType TYPE_STORED
      Deprecated.
      Type for a stored LegacyIntField: normalization factors, frequencies, and positions are omitted.
  • Constructor Details