Class Field

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.Object fieldsData
      Field's value
      protected java.lang.String name
      Field's name
      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
      protected IndexableFieldType type
      Field's type
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        Field​(java.lang.String name, byte[] value, int offset, int length, IndexableFieldType type)
      Create field with binary value.
        Field​(java.lang.String name, byte[] value, IndexableFieldType type)
      Create field with binary value.
        Field​(java.lang.String name, java.io.Reader reader, IndexableFieldType type)
      Create field with Reader value.
        Field​(java.lang.String name, java.lang.CharSequence value, IndexableFieldType type)
      Create field with String value.
        Field​(java.lang.String name, TokenStream tokenStream, IndexableFieldType type)
      Create field with TokenStream value.
      protected Field​(java.lang.String name, IndexableFieldType type)
      Expert: creates a field with no initial value.
        Field​(java.lang.String name, BytesRef bytes, IndexableFieldType type)
      Create field with binary value.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      BytesRef binaryValue()
      Non-null if this field has a binary value
      IndexableFieldType fieldType()
      Returns the FieldType for this field.
      java.lang.CharSequence getCharSequenceValue()
      Non-null if this field has a string value
      java.lang.String name()
      Field name
      java.lang.Number numericValue()
      Non-null if this field has a numeric value
      java.io.Reader readerValue()
      The value of the field as a Reader, or null.
      void setBytesValue​(byte[] value)
      Expert: change the value of this field.
      void setBytesValue​(BytesRef value)
      Expert: change the value of this field.
      void setByteValue​(byte value)
      Expert: change the value of this field.
      void setDoubleValue​(double value)
      Expert: change the value of this field.
      void setFloatValue​(float value)
      Expert: change the value of this field.
      void setIntValue​(int value)
      Expert: change the value of this field.
      void setLongValue​(long value)
      Expert: change the value of this field.
      void setReaderValue​(java.io.Reader value)
      Expert: change the value of this field.
      void setShortValue​(short value)
      Expert: change the value of this field.
      void setStringValue​(java.lang.String value)
      Expert: change the value of this field.
      void setTokenStream​(TokenStream tokenStream)
      Expert: sets the token stream to be used for indexing and causes isIndexed() and isTokenized() to return true.
      java.lang.String stringValue()
      The value of the field as a String, or null.
      TokenStream tokenStream​(Analyzer analyzer, TokenStream reuse)
      Creates the TokenStream used for indexing this field.
      TokenStream tokenStreamValue()
      The TokenStream for this field to be used when indexing, or null.
      java.lang.String toString()
      Prints a Field for human consumption.
      • Methods inherited from class java.lang.Object

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

      • name

        protected final java.lang.String name
        Field's name
      • fieldsData

        protected java.lang.Object fieldsData
        Field's value
      • 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
    • Constructor Detail

      • Field

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

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

        public Field​(java.lang.String name,
                     TokenStream tokenStream,
                     IndexableFieldType type)
        Create field with TokenStream value.
        Parameters:
        name - field name
        tokenStream - TokenStream value
        type - field type
        Throws:
        java.lang.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.
        java.lang.NullPointerException - if the tokenStream is null
      • Field

        public Field​(java.lang.String name,
                     byte[] value,
                     IndexableFieldType 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:
        java.lang.IllegalArgumentException - if the field name, value or type is null, or the field's type is indexed().
      • Field

        public Field​(java.lang.String name,
                     byte[] value,
                     int offset,
                     int length,
                     IndexableFieldType 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:
        java.lang.IllegalArgumentException - if the field name, value or type is null, or the field's type is indexed().
      • Field

        public Field​(java.lang.String name,
                     BytesRef bytes,
                     IndexableFieldType 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:
        java.lang.IllegalArgumentException - if the field name, bytes or type is null, or the field's type is indexed().
      • Field

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

      • stringValue

        public java.lang.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 java.io.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​(java.lang.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.

      • setReaderValue

        public void setReaderValue​(java.io.Reader value)
        Expert: change the value of this field. See setStringValue(String).
      • setBytesValue

        public void setBytesValue​(byte[] value)
        Expert: change the value of this field. See setStringValue(String).
      • 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.

      • setByteValue

        public void setByteValue​(byte value)
        Expert: change the value of this field. See setStringValue(String).
      • setShortValue

        public void setShortValue​(short value)
        Expert: change the value of this field. See setStringValue(String).
      • setIntValue

        public void setIntValue​(int value)
        Expert: change the value of this field. See setStringValue(String).
      • setLongValue

        public void setLongValue​(long value)
        Expert: change the value of this field. See setStringValue(String).
      • setFloatValue

        public void setFloatValue​(float value)
        Expert: change the value of this field. See setStringValue(String).
      • setDoubleValue

        public void setDoubleValue​(double value)
        Expert: change the value of this field. See setStringValue(String).
      • 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()
      • numericValue

        public java.lang.Number numericValue()
        Description copied from interface: IndexableField
        Non-null if this field has a numeric value
        Specified by:
        numericValue in interface IndexableField
      • toString

        public java.lang.String toString()
        Prints a Field for human consumption.
        Overrides:
        toString in class java.lang.Object
      • 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