org.apache.lucene.document

Class Field

    • Field Detail

      • tokenStream

        protected TokenStream tokenStream
        Pre-analyzed tokenStream for indexed fields; this is separate from fieldsData because you are allowed to have both; eg maybe field has a String value but you customize how it's tokenized
      • boost

        protected float boost
        Field's boost
        See Also:
        boost()
    • Constructor Detail

      • Field

        protected Field(String name,
                        FieldType type)
        Expert: creates a field with no initial value. Intended only for custom Field subclasses.
        Parameters:
        name - field name
        type - field type
        Throws:
        IllegalArgumentException - if either the name or type is null.
      • Field

        public Field(String name,
                     Reader reader,
                     FieldType type)
        Create field with Reader value.
        Parameters:
        name - field name
        reader - reader value
        type - field type
        Throws:
        IllegalArgumentException - if either the name or type is null, or if the field's type is stored(), or if tokenized() is false.
        NullPointerException - if the reader is null
      • Field

        public Field(String name,
                     TokenStream tokenStream,
                     FieldType type)
        Create field with TokenStream value.
        Parameters:
        name - field name
        tokenStream - TokenStream value
        type - field type
        Throws:
        IllegalArgumentException - if either the name or type is null, or if the field's type is stored(), or if tokenized() is false, or if indexed() is false.
        NullPointerException - if the tokenStream is null
      • Field

        public Field(String name,
                     byte[] value,
                     FieldType type)
        Create field with binary value.

        NOTE: the provided byte[] is not copied so be sure not to change it until you're done with this field.

        Parameters:
        name - field name
        value - byte array pointing to binary content (not copied)
        type - field type
        Throws:
        IllegalArgumentException - if the field name is null, or the field's type is indexed()
        NullPointerException - if the type is null
      • Field

        public Field(String name,
                     byte[] value,
                     int offset,
                     int length,
                     FieldType type)
        Create field with binary value.

        NOTE: the provided byte[] is not copied so be sure not to change it until you're done with this field.

        Parameters:
        name - field name
        value - byte array pointing to binary content (not copied)
        offset - starting position of the byte array
        length - valid length of the byte array
        type - field type
        Throws:
        IllegalArgumentException - if the field name is null, or the field's type is indexed()
        NullPointerException - if the type is null
      • Field

        public Field(String name,
                     BytesRef bytes,
                     FieldType type)
        Create field with binary value.

        NOTE: the provided BytesRef is not copied so be sure not to change it until you're done with this field.

        Parameters:
        name - field name
        bytes - BytesRef pointing to binary content (not copied)
        type - field type
        Throws:
        IllegalArgumentException - if the field name is null, or the field's type is indexed()
        NullPointerException - if the type is null
      • Field

        public Field(String name,
                     String value,
                     FieldType type)
        Create field with String value.
        Parameters:
        name - field name
        value - string value
        type - field type
        Throws:
        IllegalArgumentException - if either the name or value is null, or if the field's type is neither indexed() nor stored(), or if indexed() is false but storeTermVectors() is true.
        NullPointerException - if the type is null
    • Method Detail

      • stringValue

        public String stringValue()
        The value of the field as a String, or null. If null, the Reader value or binary value is used. Exactly one of stringValue(), readerValue(), and binaryValue() must be set.
        Specified by:
        stringValue in interface IndexableField
      • readerValue

        public Reader readerValue()
        The value of the field as a Reader, or null. If null, the String value or binary value is used. Exactly one of stringValue(), readerValue(), and binaryValue() must be set.
        Specified by:
        readerValue in interface IndexableField
      • tokenStreamValue

        public TokenStream tokenStreamValue()
        The TokenStream for this field to be used when indexing, or null. If null, the Reader value or String value is analyzed to produce the indexed tokens.
      • setStringValue

        public void setStringValue(String value)

        Expert: change the value of this field. This can be used during indexing to re-use a single Field instance to improve indexing speed by avoiding GC cost of new'ing and reclaiming Field instances. Typically a single Document instance is re-used as well. This helps most on small documents.

        Each Field instance should only be used once within a single Document instance. See ImproveIndexingSpeed for details.

      • setBytesValue

        public void setBytesValue(BytesRef value)
        Expert: change the value of this field. See setStringValue(String).

        NOTE: the provided BytesRef is not copied so be sure not to change it until you're done with this field.

      • setTokenStream

        public void setTokenStream(TokenStream tokenStream)
        Expert: sets the token stream to be used for indexing and causes isIndexed() and isTokenized() to return true. May be combined with stored values from stringValue() or binaryValue()
      • boost

        public float boost()
        Returns the field's index-time boost.

        Only fields can have an index-time boost, if you want to simulate a "document boost", then you must pre-multiply it across all the relevant fields yourself.

        The boost is used to compute the norm factor for the field. By default, in the Similarity.computeNorm(FieldInvertState) method, the boost value is multiplied by the length normalization factor and then rounded by ClassicSimilarity.encodeNormValue(float) before it is stored in the index. One should attempt to ensure that this product does not overflow the range of that encoding.

        It is illegal to return a boost other than 1.0f for a field that is not indexed (IndexableFieldType.indexOptions() is IndexOptions.NONE) or omits normalization values (IndexableFieldType.omitNorms() returns true).

        The default value is 1.0f (no boost).

        Specified by:
        boost in interface IndexableField
        See Also:
        setBoost(float)
      • tokenStream

        public TokenStream tokenStream(Analyzer analyzer,
                                       TokenStream reuse)
        Description copied from interface: IndexableField
        Creates the TokenStream used for indexing this field. If appropriate, implementations should use the given Analyzer to create the TokenStreams.
        Specified by:
        tokenStream in interface IndexableField
        Parameters:
        analyzer - Analyzer that should be used to create the TokenStreams from
        reuse - TokenStream for a previous instance of this field name. This allows custom field types (like StringField and NumericField) that do not use the analyzer to still have good performance. Note: the passed-in type may be inappropriate, for example if you mix up different types of Fields for the same field name. So it's the responsibility of the implementation to check.
        Returns:
        TokenStream value for indexing the document. Should always return a non-null value if the field is to be indexed