org.apache.lucene.document
Class AbstractField

java.lang.Object
  extended by 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
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
protected AbstractField()
           
protected AbstractField(String name, Field.Store store, Field.Index index, Field.TermVector termVector)
           
 
Method Summary
 int getBinaryLength()
          Returns length of byte[] segment that is used as value, if Field is not binary returned value is undefined
 int getBinaryOffset()
          Returns offset into byte[] segment that is used as value, if Field is not binary returned value is undefined
 byte[] 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 field
 boolean getOmitTermFreqAndPositions()
          Deprecated. use getIndexOptions() instead.
 boolean isBinary()
          True iff the value of the filed is stored as binary
 boolean 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 from IndexReader.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. use setIndexOptions(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 the Similarity.computeNorm(String, FieldInvertState) method, the boost value is multiplied by the Similarity.lengthNorm(String, int) and then rounded by Similarity.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 interface Fieldable
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) and Searcher.doc(int) may thus not have the same value present as when this field was indexed.

Specified by:
getBoost in interface Fieldable
See Also:
setBoost(float)

name

public String name()
Returns the name of the field as an interned string. For example "date", "title", "body", ...

Specified by:
name in interface Fieldable

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.

Specified by:
isStored in interface Fieldable

isIndexed

public final boolean isIndexed()
True iff the value of the field is to be indexed, so that it may be searched on.

Specified by:
isIndexed in interface Fieldable

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 interface Fieldable

isTermVectorStored

public final boolean isTermVectorStored()
True iff the term or terms used to index this field are stored as a term vector, available from IndexReader.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 the stored attribute instead.

Specified by:
isTermVectorStored in interface Fieldable
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 interface Fieldable

isStorePositionWithTermVector

public boolean isStorePositionWithTermVector()
True iff terms are stored as term vector together with their token positions.

Specified by:
isStorePositionWithTermVector in interface Fieldable

isBinary

public final boolean isBinary()
True iff the value of the filed is stored as binary

Specified by:
isBinary in interface Fieldable

getBinaryValue

public byte[] getBinaryValue()
Return the raw byte[] for the binary field. Note that you must also call getBinaryLength() and getBinaryOffset() to know which range of bytes in this returned array belong to the field.

Specified by:
getBinaryValue in interface Fieldable
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 call Fieldable.getBinaryLength() and Fieldable.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 interface Fieldable
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 interface Fieldable
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 interface Fieldable
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 interface Fieldable

getOmitTermFreqAndPositions

@Deprecated
public boolean getOmitTermFreqAndPositions()
Deprecated. use getIndexOptions() instead.


getIndexOptions

public FieldInfo.IndexOptions getIndexOptions()
Specified by:
getIndexOptions in interface Fieldable
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 interface Fieldable

setOmitTermFreqAndPositions

@Deprecated
public void setOmitTermFreqAndPositions(boolean omitTermFreqAndPositions)
Deprecated. use setIndexOptions(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 or SpanQuery subclasses will silently fail to find results.

Specified by:
setIndexOptions in interface Fieldable

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 via Fieldable.stringValue() or Fieldable.getBinaryValue() is only valid as long as the IndexReader that retrieved the Document is still open.

Specified by:
isLazy in interface Fieldable
Returns:
true if this field can be loaded lazily

toString

public final String toString()
Prints a Field for human consumption.

Overrides:
toString in class Object