org.apache.lucene.document
Class Field

java.lang.Object
  extended by org.apache.lucene.document.AbstractField
      extended by org.apache.lucene.document.Field
All Implemented Interfaces:
Serializable, Fieldable

public final class Field
extends AbstractField
implements Fieldable, Serializable

A field is a section of a Document. Each field has two parts, a name and a value. Values may be free text, provided as a String or as a Reader, or they may be atomic keywords, which are not further processed. Such keywords may be used to represent dates, urls, etc. Fields are optionally stored in the index, so that they may be returned with hits on the document.

See Also:
Serialized Form

Nested Class Summary
static class Field.Index
          Specifies whether and how a field should be indexed.
static class Field.Store
          Specifies whether and how a field should be stored.
static class Field.TermVector
          Specifies whether and how a field should have term vectors.
 
Field Summary
 
Fields inherited from class org.apache.lucene.document.AbstractField
binaryLength, binaryOffset, boost, fieldsData, indexOptions, isBinary, isIndexed, isStored, isTokenized, lazy, name, omitNorms, storeOffsetWithTermVector, storePositionWithTermVector, storeTermVector, tokenStream
 
Constructor Summary
Field(String name, boolean internName, String value, Field.Store store, Field.Index index, Field.TermVector termVector)
          Create a field by specifying its name, value and how it will be saved in the index.
Field(String name, byte[] value)
          Create a stored field with binary value.
Field(String name, byte[] value, Field.Store store)
          Deprecated. Use instead
Field(String name, byte[] value, int offset, int length)
          Create a stored field with binary value.
Field(String name, byte[] value, int offset, int length, Field.Store store)
          Deprecated. Use instead
Field(String name, Reader reader)
          Create a tokenized and indexed field that is not stored.
Field(String name, Reader reader, Field.TermVector termVector)
          Create a tokenized and indexed field that is not stored, optionally with storing term vectors.
Field(String name, String value, Field.Store store, Field.Index index)
          Create a field by specifying its name, value and how it will be saved in the index.
Field(String name, String value, Field.Store store, Field.Index index, Field.TermVector termVector)
          Create a field by specifying its name, value and how it will be saved in the index.
Field(String name, TokenStream tokenStream)
          Create a tokenized and indexed field that is not stored.
Field(String name, TokenStream tokenStream, Field.TermVector termVector)
          Create a tokenized and indexed field that is not stored, optionally with storing term vectors.
 
Method Summary
 Reader readerValue()
          The value of the field as a Reader, or null.
 void setTokenStream(TokenStream tokenStream)
          Expert: sets the token stream to be used for indexing and causes isIndexed() and isTokenized() to return true.
 void setValue(byte[] value)
          Expert: change the value of this field.
 void setValue(byte[] value, int offset, int length)
          Expert: change the value of this field.
 void setValue(Reader value)
          Expert: change the value of this field.
 void setValue(String value)
          Expert: change the value of this field.
 String stringValue()
          The value of the field as a String, or null.
 TokenStream tokenStreamValue()
          The TokesStream for this field to be used when indexing, or null.
 
Methods inherited from class org.apache.lucene.document.AbstractField
getBinaryLength, getBinaryOffset, getBinaryValue, getBinaryValue, getBoost, getIndexOptions, getOmitNorms, getOmitTermFreqAndPositions, isBinary, isIndexed, isLazy, isStored, isStoreOffsetWithTermVector, isStorePositionWithTermVector, isTermVectorStored, isTokenized, name, setBoost, setIndexOptions, setOmitNorms, setOmitTermFreqAndPositions, setStoreTermVector, toString
 
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
getBinaryLength, getBinaryOffset, getBinaryValue, getBinaryValue, getBoost, getIndexOptions, getOmitNorms, isBinary, isIndexed, isLazy, isStored, isStoreOffsetWithTermVector, isStorePositionWithTermVector, isTermVectorStored, isTokenized, name, setBoost, setIndexOptions, setOmitNorms
 

Constructor Detail

Field

public Field(String name,
             String value,
             Field.Store store,
             Field.Index index)
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 field
value - The string to process
store - Whether value should be stored in the index
index - Whether the field should be indexed, and if so, if it should be tokenized before indexing
Throws:
NullPointerException - if name or value is null
IllegalArgumentException - if the field is neither stored nor indexed

Field

public Field(String name,
             String value,
             Field.Store store,
             Field.Index index,
             Field.TermVector termVector)
Create a field by specifying its name, value and how it will be saved in the index.

Parameters:
name - The name of the field
value - The string to process
store - Whether value should be stored in the index
index - Whether the field should be indexed, and if so, if it should be tokenized before indexing
termVector - Whether term vector should be stored
Throws:
NullPointerException - if name or value is null
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

public Field(String name,
             boolean internName,
             String value,
             Field.Store store,
             Field.Index index,
             Field.TermVector termVector)
Create a field by specifying its name, value and how it will be saved in the index.

Parameters:
name - The name of the field
internName - Whether to .intern() name or not
value - The string to process
store - Whether value should be stored in the index
index - Whether the field should be indexed, and if so, if it should be tokenized before indexing
termVector - Whether term vector should be stored
Throws:
NullPointerException - if name or value is null
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

public Field(String name,
             Reader reader)
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 until IndexWriter.addDocument(Document) has been called.

Parameters:
name - The name of the field
reader - The reader with the content
Throws:
NullPointerException - if name or reader is null

Field

public Field(String name,
             Reader reader,
             Field.TermVector termVector)
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 until IndexWriter.addDocument(Document) has been called.

Parameters:
name - The name of the field
reader - The reader with the content
termVector - Whether term vector should be stored
Throws:
NullPointerException - if name or reader is null

Field

public Field(String name,
             TokenStream tokenStream)
Create 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 until IndexWriter.addDocument(Document) has been called.

Parameters:
name - The name of the field
tokenStream - The TokenStream with the content
Throws:
NullPointerException - if name or tokenStream is null

Field

public Field(String name,
             TokenStream tokenStream,
             Field.TermVector termVector)
Create 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 until IndexWriter.addDocument(Document) has been called.

Parameters:
name - The name of the field
tokenStream - The TokenStream with the content
termVector - Whether term vector should be stored
Throws:
NullPointerException - if name or tokenStream is null

Field

@Deprecated
public Field(String name,
                        byte[] value,
                        Field.Store store)
Deprecated. Use instead

Create a stored field with binary value. Optionally the value may be compressed.

Parameters:
name - The name of the field
value - The binary value
store - Must be Store.YES
Throws:
IllegalArgumentException - if store is Store.NO

Field

public Field(String name,
             byte[] value)
Create a stored field with binary value. Optionally the value may be compressed.

Parameters:
name - The name of the field
value - The binary value

Field

@Deprecated
public Field(String name,
                        byte[] value,
                        int offset,
                        int length,
                        Field.Store store)
Deprecated. Use instead

Create a stored field with binary value. Optionally the value may be compressed.

Parameters:
name - The name of the field
value - The binary value
offset - Starting offset in value where this Field's bytes are
length - Number of bytes to use for this Field, starting at offset
store - How value should be stored (compressed or not)
Throws:
IllegalArgumentException - if store is Store.NO

Field

public Field(String name,
             byte[] value,
             int offset,
             int length)
Create a stored field with binary value. Optionally the value may be compressed.

Parameters:
name - The name of the field
value - The binary value
offset - Starting offset in value where this Field's bytes are
length - Number of bytes to use for this Field, starting at offset
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 getBinaryValue() must be set.

Specified by:
stringValue in interface Fieldable

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 getBinaryValue() must be set.

Specified by:
readerValue in interface Fieldable
See Also:
Fieldable.stringValue()

tokenStreamValue

public TokenStream tokenStreamValue()
The TokesStream 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.

Specified by:
tokenStreamValue in interface Fieldable
See Also:
Fieldable.stringValue()

setValue

public void setValue(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.


setValue

public void setValue(Reader value)
Expert: change the value of this field. See setValue(String).


setValue

public void setValue(byte[] value)
Expert: change the value of this field. See setValue(String).


setValue

public void setValue(byte[] value,
                     int offset,
                     int length)
Expert: change the value of this field. See setValue(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()