org.apache.lucene.index
Class MultiFields

java.lang.Object
  extended by org.apache.lucene.index.Fields
      extended by org.apache.lucene.index.MultiFields

public final class MultiFields
extends Fields

Exposes flex API, merged from flex API of sub-segments. This is useful when you're interacting with an IndexReader implementation that consists of sequential sub-readers (eg DirectoryReader or MultiReader).

NOTE: for composite readers, you'll get better performance by gathering the sub readers using IndexReader.getTopReaderContext() to get the atomic leaves and then operate per-AtomicReader, instead of using this class.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Field Summary
 
Fields inherited from class org.apache.lucene.index.Fields
EMPTY_ARRAY
 
Constructor Summary
MultiFields(Fields[] subs, ReaderSlice[] subSlices)
           
 
Method Summary
static Fields getFields(IndexReader reader)
          Returns a single Fields instance for this reader, merging fields/terms/docs/positions on the fly.
static Collection<String> getIndexedFields(IndexReader reader)
           
static Bits getLiveDocs(IndexReader reader)
           
static FieldInfos getMergedFieldInfos(IndexReader reader)
          Call this to get the (merged) FieldInfos for a composite reader.
static DocsEnum getTermDocsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, boolean needsFreqs)
          Returns DocsEnum for the specified field & term.
static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r, Bits liveDocs, String field, BytesRef term, boolean needsOffsets)
          Returns DocsAndPositionsEnum for the specified field & term.
static Terms getTerms(IndexReader r, String field)
          This method may return null if the field does not exist.
 FieldsEnum iterator()
          Returns an iterator that will step through all fields names.
 int size()
          Returns the number of terms for all fields, or -1 if this measure isn't stored by the codec.
 Terms terms(String field)
          Get the Terms for this field.
static long totalTermFreq(IndexReader r, String field, BytesRef text)
           
 
Methods inherited from class org.apache.lucene.index.Fields
getUniqueTermCount
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MultiFields

public MultiFields(Fields[] subs,
                   ReaderSlice[] subSlices)
Method Detail

getFields

public static Fields getFields(IndexReader reader)
                        throws IOException
Returns a single Fields instance for this reader, merging fields/terms/docs/positions on the fly. This method will return null if the reader has no postings.

NOTE: this is a slow way to access postings. It's better to get the sub-readers and iterate through them yourself.

Throws:
IOException

getLiveDocs

public static Bits getLiveDocs(IndexReader reader)

getTerms

public static Terms getTerms(IndexReader r,
                             String field)
                      throws IOException
This method may return null if the field does not exist.

Throws:
IOException

getTermDocsEnum

public static DocsEnum getTermDocsEnum(IndexReader r,
                                       Bits liveDocs,
                                       String field,
                                       BytesRef term,
                                       boolean needsFreqs)
                                throws IOException
Returns DocsEnum for the specified field & term. This may return null if the term does not exist.

Throws:
IOException

getTermPositionsEnum

public static DocsAndPositionsEnum getTermPositionsEnum(IndexReader r,
                                                        Bits liveDocs,
                                                        String field,
                                                        BytesRef term,
                                                        boolean needsOffsets)
                                                 throws IOException
Returns DocsAndPositionsEnum for the specified field & term. This may return null if the term does not exist or positions were not indexed.

Throws:
IOException

iterator

public FieldsEnum iterator()
                    throws IOException
Description copied from class: Fields
Returns an iterator that will step through all fields names. This will not return null.

Specified by:
iterator in class Fields
Throws:
IOException

terms

public Terms terms(String field)
            throws IOException
Description copied from class: Fields
Get the Terms for this field. This will return null if the field does not exist.

Specified by:
terms in class Fields
Throws:
IOException

size

public int size()
Description copied from class: Fields
Returns the number of terms for all fields, or -1 if this measure isn't stored by the codec. Note that, just like other term measures, this measure does not take deleted documents into account.

Specified by:
size in class Fields

totalTermFreq

public static long totalTermFreq(IndexReader r,
                                 String field,
                                 BytesRef text)
                          throws IOException
Throws:
IOException

getMergedFieldInfos

public static FieldInfos getMergedFieldInfos(IndexReader reader)
Call this to get the (merged) FieldInfos for a composite reader.

NOTE: the returned field numbers will likely not correspond to the actual field numbers in the underlying readers, and codec metadata (FieldInfo.getAttribute(String) will be unavailable.


getIndexedFields

public static Collection<String> getIndexedFields(IndexReader reader)


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.