Class Field
- java.lang.Object
-
- org.apache.lucene.document.Field
-
- All Implemented Interfaces:
IndexableField
- Direct Known Subclasses:
AssociationFacetField,BinaryDocValuesField,DoubleField,FacetField,FloatField,IntField,LongField,NumericDocValuesField,SortedDocValuesField,SortedSetDocValuesFacetField,SortedSetDocValuesField,StoredField,StringField,TextField
public class Field extends java.lang.Object implements IndexableField
Expert: directly create a field for a document. Most users should use one of the sugar subclasses:IntField,LongField,FloatField,DoubleField,BinaryDocValuesField,NumericDocValuesField,SortedDocValuesField,StringField,TextField,StoredField. A field is a section of a Document. Each field has three parts: name, type and value. Values may be text (String, Reader or pre-analyzed TokenStream), binary (byte[]), or numeric (a Number). Fields are optionally stored in the index, so that they may be returned with hits on the document. NOTE: the field type is anIndexableFieldType. Making changes to the state of the IndexableFieldType will impact any Field it is used in. It is strongly recommended that no changes be made after Field instantiation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classField.IndexDeprecated.This is here only to ease transition from the pre-4.0 APIs.static classField.StoreSpecifies whether and how a field should be stored.static classField.TermVectorDeprecated.This is here only to ease transition from the pre-4.0 APIs.
-
Constructor Summary
Constructors Constructor Description Field(java.lang.String name, byte[] value)Deprecated.UseStoredFieldinstead.Field(java.lang.String name, byte[] value, int offset, int length)Deprecated.UseStoredFieldinstead.Field(java.lang.String name, byte[] value, int offset, int length, FieldType type)Create field with binary value.Field(java.lang.String name, byte[] value, FieldType type)Create field with binary value.Field(java.lang.String name, java.io.Reader reader)Deprecated.UseTextFieldinstead.Field(java.lang.String name, java.io.Reader reader, Field.TermVector termVector)Deprecated.UseTextFieldinstead.Field(java.lang.String name, java.io.Reader reader, FieldType type)Create field with Reader value.Field(java.lang.String name, java.lang.String value, Field.Store store, Field.Index index)Deprecated.UseStringField,TextFieldinstead.Field(java.lang.String name, java.lang.String value, Field.Store store, Field.Index index, Field.TermVector termVector)Deprecated.UseStringField,TextFieldinstead.Field(java.lang.String name, java.lang.String value, FieldType type)Create field with String value.Field(java.lang.String name, TokenStream tokenStream)Deprecated.UseTextFieldinsteadField(java.lang.String name, TokenStream tokenStream, Field.TermVector termVector)Deprecated.UseTextFieldinsteadField(java.lang.String name, TokenStream tokenStream, FieldType type)Create field with TokenStream value.Field(java.lang.String name, BytesRef bytes, FieldType type)Create field with binary value.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description BytesRefbinaryValue()Non-null if this field has a binary valuefloatboost()Returns the field's index-time boost.FieldTypefieldType()Returns theFieldTypefor this field.java.lang.Stringname()Field namejava.lang.NumbernumericValue()Non-null if this field has a numeric valuejava.io.ReaderreaderValue()The value of the field as a Reader, or null.voidsetBoost(float boost)Sets the boost factor on this field.voidsetBytesValue(byte[] value)Expert: change the value of this field.voidsetBytesValue(BytesRef value)Expert: change the value of this field.voidsetByteValue(byte value)Expert: change the value of this field.voidsetDoubleValue(double value)Expert: change the value of this field.voidsetFloatValue(float value)Expert: change the value of this field.voidsetIntValue(int value)Expert: change the value of this field.voidsetLongValue(long value)Expert: change the value of this field.voidsetReaderValue(java.io.Reader value)Expert: change the value of this field.voidsetShortValue(short value)Expert: change the value of this field.voidsetStringValue(java.lang.String value)Expert: change the value of this field.voidsetTokenStream(TokenStream tokenStream)Expert: sets the token stream to be used for indexing and causes isIndexed() and isTokenized() to return true.java.lang.StringstringValue()The value of the field as a String, or null.TokenStreamtokenStream(Analyzer analyzer)Creates the TokenStream used for indexing this field.TokenStreamtokenStreamValue()The TokenStream for this field to be used when indexing, or null.java.lang.StringtoString()Prints a Field for human consumption.static FieldTypetranslateFieldType(Field.Store store, Field.Index index, Field.TermVector termVector)Deprecated.This is here only to ease transition from the pre-4.0 APIs.
-
-
-
Constructor Detail
-
Field
public Field(java.lang.String name, java.io.Reader reader, FieldType type)Create field with Reader value.- Parameters:
name- field namereader- reader valuetype- 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, FieldType type)Create field with TokenStream value.- Parameters:
name- field nametokenStream- TokenStream valuetype- 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, 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 namevalue- byte array pointing to binary content (not copied)type- field type- Throws:
java.lang.IllegalArgumentException- if the field name is null, or the field's type is indexed()java.lang.NullPointerException- if the type is null
-
Field
public Field(java.lang.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 namevalue- byte array pointing to binary content (not copied)offset- starting position of the byte arraylength- valid length of the byte arraytype- field type- Throws:
java.lang.IllegalArgumentException- if the field name is null, or the field's type is indexed()java.lang.NullPointerException- if the type is null
-
Field
public Field(java.lang.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 namebytes- BytesRef pointing to binary content (not copied)type- field type- Throws:
java.lang.IllegalArgumentException- if the field name is null, or the field's type is indexed()java.lang.NullPointerException- if the type is null
-
Field
public Field(java.lang.String name, java.lang.String value, FieldType type)Create field with String value.- Parameters:
name- field namevalue- string valuetype- field type- Throws:
java.lang.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.java.lang.NullPointerException- if the type is null
-
Field
@Deprecated public Field(java.lang.String name, java.lang.String value, Field.Store store, Field.Index index)Deprecated.UseStringField,TextFieldinstead.Create a field by specifying its name, value and how it will be saved in the index. Term vectors will not be stored in the index.- Parameters:
name- The name of the fieldvalue- The string to processstore- Whethervalueshould be stored in the indexindex- Whether the field should be indexed, and if so, if it should be tokenized before indexing- Throws:
java.lang.NullPointerException- if name or value isnulljava.lang.IllegalArgumentException- if the field is neither stored nor indexed
-
Field
@Deprecated public Field(java.lang.String name, java.lang.String value, Field.Store store, Field.Index index, Field.TermVector termVector)Deprecated.UseStringField,TextFieldinstead.Create a field by specifying its name, value and how it will be saved in the index.- Parameters:
name- The name of the fieldvalue- The string to processstore- Whethervalueshould be stored in the indexindex- Whether the field should be indexed, and if so, if it should be tokenized before indexingtermVector- Whether term vector should be stored- Throws:
java.lang.NullPointerException- if name or value isnulljava.lang.IllegalArgumentException- in any of the following situations:- the field is neither stored nor indexed
- the field is not indexed but termVector is
TermVector.YES
-
Field
@Deprecated public Field(java.lang.String name, java.io.Reader reader)Deprecated.UseTextFieldinstead.Create a tokenized and indexed field that is not stored. Term vectors will not be stored. The Reader is read only when the Document is added to the index, i.e. you may not close the Reader untilIndexWriter.addDocument(java.lang.Iterable<? extends org.apache.lucene.index.IndexableField>)has been called.- Parameters:
name- The name of the fieldreader- The reader with the content- Throws:
java.lang.NullPointerException- if name or reader isnull
-
Field
@Deprecated public Field(java.lang.String name, java.io.Reader reader, Field.TermVector termVector)Deprecated.UseTextFieldinstead.Create a tokenized and indexed field that is not stored, optionally with storing term vectors. The Reader is read only when the Document is added to the index, i.e. you may not close the Reader untilIndexWriter.addDocument(java.lang.Iterable<? extends org.apache.lucene.index.IndexableField>)has been called.- Parameters:
name- The name of the fieldreader- The reader with the contenttermVector- Whether term vector should be stored- Throws:
java.lang.NullPointerException- if name or reader isnull
-
Field
@Deprecated public Field(java.lang.String name, TokenStream tokenStream)Deprecated.UseTextFieldinsteadCreate a tokenized and indexed field that is not stored. Term vectors will not be stored. This is useful for pre-analyzed fields. The TokenStream is read only when the Document is added to the index, i.e. you may not close the TokenStream untilIndexWriter.addDocument(java.lang.Iterable<? extends org.apache.lucene.index.IndexableField>)has been called.- Parameters:
name- The name of the fieldtokenStream- The TokenStream with the content- Throws:
java.lang.NullPointerException- if name or tokenStream isnull
-
Field
@Deprecated public Field(java.lang.String name, TokenStream tokenStream, Field.TermVector termVector)Deprecated.UseTextFieldinsteadCreate a tokenized and indexed field that is not stored, optionally with storing term vectors. This is useful for pre-analyzed fields. The TokenStream is read only when the Document is added to the index, i.e. you may not close the TokenStream untilIndexWriter.addDocument(java.lang.Iterable<? extends org.apache.lucene.index.IndexableField>)has been called.- Parameters:
name- The name of the fieldtokenStream- The TokenStream with the contenttermVector- Whether term vector should be stored- Throws:
java.lang.NullPointerException- if name or tokenStream isnull
-
Field
@Deprecated public Field(java.lang.String name, byte[] value)Deprecated.UseStoredFieldinstead.Create a stored field with binary value. Optionally the value may be compressed.- Parameters:
name- The name of the fieldvalue- The binary value
-
Field
@Deprecated public Field(java.lang.String name, byte[] value, int offset, int length)Deprecated.UseStoredFieldinstead.Create a stored field with binary value. Optionally the value may be compressed.- Parameters:
name- The name of the fieldvalue- The binary valueoffset- Starting offset in value where this Field's bytes arelength- Number of bytes to use for this Field, starting at offset
-
-
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 getBinaryValue() must be set.- Specified by:
stringValuein interfaceIndexableField
-
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 getBinaryValue() must be set.- Specified by:
readerValuein interfaceIndexableField
-
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
Documentinstance is re-used as well. This helps most on small documents.Each Field instance should only be used once within a single
Documentinstance. See ImproveIndexingSpeed for details.
-
setReaderValue
public void setReaderValue(java.io.Reader value)
Expert: change the value of this field. SeesetStringValue(String).
-
setBytesValue
public void setBytesValue(byte[] value)
Expert: change the value of this field. SeesetStringValue(String).
-
setBytesValue
public void setBytesValue(BytesRef value)
Expert: change the value of this field. SeesetStringValue(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. SeesetStringValue(String).
-
setShortValue
public void setShortValue(short value)
Expert: change the value of this field. SeesetStringValue(String).
-
setIntValue
public void setIntValue(int value)
Expert: change the value of this field. SeesetStringValue(String).
-
setLongValue
public void setLongValue(long value)
Expert: change the value of this field. SeesetStringValue(String).
-
setFloatValue
public void setFloatValue(float value)
Expert: change the value of this field. SeesetStringValue(String).
-
setDoubleValue
public void setDoubleValue(double value)
Expert: change the value of this field. SeesetStringValue(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 getBinaryValue()
-
name
public java.lang.String name()
Description copied from interface:IndexableFieldField name- Specified by:
namein interfaceIndexableField
-
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 byDefaultSimilarity.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.indexed()is false) or omits normalization values (IndexableFieldType.omitNorms()returns true).The default value is
1.0f(no boost).- Specified by:
boostin interfaceIndexableField- See Also:
setBoost(float)
-
setBoost
public void setBoost(float boost)
Sets the boost factor on this field.- Throws:
java.lang.IllegalArgumentException- if this field is not indexed, or if it omits norms.- See Also:
boost()
-
numericValue
public java.lang.Number numericValue()
Description copied from interface:IndexableFieldNon-null if this field has a numeric value- Specified by:
numericValuein interfaceIndexableField
-
binaryValue
public BytesRef binaryValue()
Description copied from interface:IndexableFieldNon-null if this field has a binary value- Specified by:
binaryValuein interfaceIndexableField
-
toString
public java.lang.String toString()
Prints a Field for human consumption.- Overrides:
toStringin classjava.lang.Object
-
fieldType
public FieldType fieldType()
Returns theFieldTypefor this field.- Specified by:
fieldTypein interfaceIndexableField
-
tokenStream
public TokenStream tokenStream(Analyzer analyzer) throws java.io.IOException
Description copied from interface:IndexableFieldCreates the TokenStream used for indexing this field. If appropriate, implementations should use the given Analyzer to create the TokenStreams.- Specified by:
tokenStreamin interfaceIndexableField- Parameters:
analyzer- Analyzer that should be used to create the TokenStreams from- Returns:
- TokenStream value for indexing the document. Should always return a non-null value if the field is to be indexed
- Throws:
java.io.IOException- Can be thrown while creating the TokenStream
-
translateFieldType
@Deprecated public static final FieldType translateFieldType(Field.Store store, Field.Index index, Field.TermVector termVector)
Deprecated.This is here only to ease transition from the pre-4.0 APIs.Translates the pre-4.0 enums for specifying how a field should be indexed into the 4.0FieldTypeapproach.
-
-