Class AbstractField
- java.lang.Object
-
- org.apache.lucene.document.AbstractField
-
- All Implemented Interfaces:
Serializable
,Fieldable
- Direct Known Subclasses:
Field
,NumericField
public abstract class AbstractField extends Object implements Fieldable
Base class for Field implementations- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected int
binaryLength
protected int
binaryOffset
protected float
boost
protected Object
fieldsData
protected FieldInfo.IndexOptions
indexOptions
protected boolean
isBinary
protected boolean
isIndexed
protected boolean
isStored
protected boolean
isTokenized
protected boolean
lazy
protected String
name
protected boolean
omitNorms
protected boolean
storeOffsetWithTermVector
protected boolean
storePositionWithTermVector
protected boolean
storeTermVector
protected TokenStream
tokenStream
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractField()
protected
AbstractField(String name, Field.Store store, Field.Index index, Field.TermVector termVector)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description int
getBinaryLength()
Returns length of byte[] segment that is used as value, if Field is not binary returned value is undefinedint
getBinaryOffset()
Returns offset into byte[] segment that is used as value, if Field is not binary returned value is undefinedbyte[]
getBinaryValue()
Return the raw byte[] for the binary field.byte[]
getBinaryValue(byte[] result)
Return the raw byte[] for the binary field.float
getBoost()
Returns the boost factor for hits for this field.FieldInfo.IndexOptions
getIndexOptions()
boolean
getOmitNorms()
True if norms are omitted for this indexed fieldboolean
getOmitTermFreqAndPositions()
Deprecated.usegetIndexOptions()
instead.boolean
isBinary()
True iff the value of the filed is stored as binaryboolean
isIndexed()
True iff the value of the field is to be indexed, so that it may be searched on.boolean
isLazy()
Indicates whether a Field is Lazy or not.boolean
isStored()
True iff the value of the field is to be stored in the index for return with search hits.boolean
isStoreOffsetWithTermVector()
True iff terms are stored as term vector together with their offsets (start and end position in source text).boolean
isStorePositionWithTermVector()
True iff terms are stored as term vector together with their token positions.boolean
isTermVectorStored()
True iff the term or terms used to index this field are stored as a term vector, available fromIndexReader.getTermFreqVector(int,String)
.boolean
isTokenized()
True iff the value of the field should be tokenized as text prior to indexing.String
name()
Returns the name of the field as an interned string.void
setBoost(float boost)
Sets the boost factor hits on this field.void
setIndexOptions(FieldInfo.IndexOptions indexOptions)
Expert: If set, omit term freq, and optionally also positions and payloads from postings for this field.void
setOmitNorms(boolean omitNorms)
Expert: If set, omit normalization factors associated with this indexed field.void
setOmitTermFreqAndPositions(boolean omitTermFreqAndPositions)
Deprecated.usesetIndexOptions(FieldInfo.IndexOptions)
instead.protected void
setStoreTermVector(Field.TermVector termVector)
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
-
Methods inherited from interface org.apache.lucene.document.Fieldable
readerValue, stringValue, tokenStreamValue
-
-
-
-
Field Detail
-
name
protected String name
-
storeTermVector
protected boolean storeTermVector
-
storeOffsetWithTermVector
protected boolean storeOffsetWithTermVector
-
storePositionWithTermVector
protected boolean storePositionWithTermVector
-
omitNorms
protected boolean omitNorms
-
isStored
protected boolean isStored
-
isIndexed
protected boolean isIndexed
-
isTokenized
protected boolean isTokenized
-
isBinary
protected boolean isBinary
-
lazy
protected boolean lazy
-
indexOptions
protected FieldInfo.IndexOptions indexOptions
-
boost
protected float boost
-
fieldsData
protected Object fieldsData
-
tokenStream
protected TokenStream tokenStream
-
binaryLength
protected int binaryLength
-
binaryOffset
protected int binaryOffset
-
-
Constructor Detail
-
AbstractField
protected AbstractField()
-
AbstractField
protected AbstractField(String name, Field.Store store, Field.Index index, Field.TermVector termVector)
-
-
Method Detail
-
setBoost
public void setBoost(float boost)
Sets the boost factor hits on this field. This value will be multiplied into the score of all hits on this this field of this document.The boost is multiplied by
Document.getBoost()
of the document containing this field. If a document has multiple fields with the same name, all such values are multiplied together. This product is then used to compute the norm factor for the field. By default, in theSimilarity.computeNorm(String, FieldInvertState)
method, the boost value is multiplied by theSimilarity.lengthNorm(String, int)
and then rounded bySimilarity.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.- Specified by:
setBoost
in interfaceFieldable
- See Also:
Document.setBoost(float)
,Similarity.computeNorm(String, FieldInvertState)
,Similarity.encodeNormValue(float)
-
getBoost
public float getBoost()
Returns the boost factor for hits for this field.The default value is 1.0.
Note: this value is not stored directly with the document in the index. Documents returned from
IndexReader.document(int)
andSearcher.doc(int)
may thus not have the same value present as when this field was indexed.- Specified by:
getBoost
in interfaceFieldable
- See Also:
setBoost(float)
-
name
public String name()
Returns the name of the field as an interned string. For example "date", "title", "body", ...
-
setStoreTermVector
protected void setStoreTermVector(Field.TermVector termVector)
-
isStored
public final boolean isStored()
True iff the value of the field is to be stored in the index for return with search hits. It is an error for this to be true if a field is Reader-valued.
-
isIndexed
public final boolean isIndexed()
True iff the value of the field is to be indexed, so that it may be searched on.
-
isTokenized
public final boolean isTokenized()
True iff the value of the field should be tokenized as text prior to indexing. Un-tokenized fields are indexed as a single word and may not be Reader-valued.- Specified by:
isTokenized
in interfaceFieldable
-
isTermVectorStored
public final boolean isTermVectorStored()
True iff the term or terms used to index this field are stored as a term vector, available fromIndexReader.getTermFreqVector(int,String)
. These methods do not provide access to the original content of the field, only to terms used to index it. If the original content must be preserved, use thestored
attribute instead.- Specified by:
isTermVectorStored
in interfaceFieldable
- See Also:
IndexReader.getTermFreqVector(int, String)
-
isStoreOffsetWithTermVector
public boolean isStoreOffsetWithTermVector()
True iff terms are stored as term vector together with their offsets (start and end position in source text).- Specified by:
isStoreOffsetWithTermVector
in interfaceFieldable
-
isStorePositionWithTermVector
public boolean isStorePositionWithTermVector()
True iff terms are stored as term vector together with their token positions.- Specified by:
isStorePositionWithTermVector
in interfaceFieldable
-
isBinary
public final boolean isBinary()
True iff the value of the filed is stored as binary
-
getBinaryValue
public byte[] getBinaryValue()
Return the raw byte[] for the binary field. Note that you must also callgetBinaryLength()
andgetBinaryOffset()
to know which range of bytes in this returned array belong to the field.- Specified by:
getBinaryValue
in interfaceFieldable
- Returns:
- reference to the Field value as byte[].
-
getBinaryValue
public byte[] getBinaryValue(byte[] result)
Description copied from interface:Fieldable
Return the raw byte[] for the binary field. Note that you must also callFieldable.getBinaryLength()
andFieldable.getBinaryOffset()
to know which range of bytes in this returned array belong to the field.About reuse: if you pass in the result byte[] and it is used, likely the underlying implementation will hold onto this byte[] and return it in future calls to
Fieldable.getBinaryValue()
. So if you subsequently re-use the same byte[] elsewhere it will alter this Fieldable's value.- Specified by:
getBinaryValue
in interfaceFieldable
- Parameters:
result
- User defined buffer that will be used if possible. If this is null or not large enough, a new buffer is allocated- Returns:
- reference to the Field value as byte[].
-
getBinaryLength
public int getBinaryLength()
Returns length of byte[] segment that is used as value, if Field is not binary returned value is undefined- Specified by:
getBinaryLength
in interfaceFieldable
- Returns:
- length of byte[] segment that represents this Field value
-
getBinaryOffset
public int getBinaryOffset()
Returns offset into byte[] segment that is used as value, if Field is not binary returned value is undefined- Specified by:
getBinaryOffset
in interfaceFieldable
- Returns:
- index of the first character in byte[] segment that represents this Field value
-
getOmitNorms
public boolean getOmitNorms()
True if norms are omitted for this indexed field- Specified by:
getOmitNorms
in interfaceFieldable
-
getOmitTermFreqAndPositions
@Deprecated public boolean getOmitTermFreqAndPositions()
Deprecated.usegetIndexOptions()
instead.
-
getIndexOptions
public FieldInfo.IndexOptions getIndexOptions()
- Specified by:
getIndexOptions
in interfaceFieldable
- See Also:
setIndexOptions(org.apache.lucene.index.FieldInfo.IndexOptions)
-
setOmitNorms
public void setOmitNorms(boolean omitNorms)
Expert: If set, omit normalization factors associated with this indexed field. This effectively disables indexing boosts and length normalization for this field.- Specified by:
setOmitNorms
in interfaceFieldable
-
setOmitTermFreqAndPositions
@Deprecated public void setOmitTermFreqAndPositions(boolean omitTermFreqAndPositions)
Deprecated.usesetIndexOptions(FieldInfo.IndexOptions)
instead.
-
setIndexOptions
public void setIndexOptions(FieldInfo.IndexOptions indexOptions)
Expert: If set, omit term freq, and optionally also positions and payloads from postings for this field.NOTE: While this option reduces storage space required in the index, it also means any query requiring positional information, such as
PhraseQuery
orSpanQuery
subclasses will silently fail to find results.- Specified by:
setIndexOptions
in interfaceFieldable
-
isLazy
public boolean isLazy()
Description copied from interface:Fieldable
Indicates whether a Field is Lazy or not. The semantics of Lazy loading are such that if a Field is lazily loaded, retrieving it's values viaFieldable.stringValue()
orFieldable.getBinaryValue()
is only valid as long as theIndexReader
that retrieved theDocument
is still open.
-
-