IndexReader is an abstract class, providing an interface for accessing an
index. Search of an index is done entirely through this abstract interface,
so that any subclass which implements it is searchable.
Concrete subclasses of IndexReader are usually constructed with a call to
the static method open.
For efficiency, in this API documents are often referred to via
document numbers, non-negative integers which each name a unique
document in the index. These document numbers are ephemeral--they may change
as documents are added to and deleted from an index. Clients should thus not
rely on a given document having the same number between sessions.
Constructor used if IndexReader is not owner of its directory.
This is used for IndexReaders that are used within other IndexReaders that take care or locking directories.
Class Methods
getCurrentVersion
public static long getCurrentVersion(
Directorydirectory
)
throws
IOException
Reads version number from segments files. The version number counts the
number of changes of the index.
getCurrentVersion
public static long getCurrentVersion(
Filedirectory
)
throws
IOException
Reads version number from segments files. The version number counts the
number of changes of the index.
getCurrentVersion
public static long getCurrentVersion(
Stringdirectory
)
throws
IOException
Reads version number from segments files. The version number counts the
number of changes of the index.
indexExists
public static boolean indexExists(
Directorydirectory
)
throws
IOException
Returns true if an index exists at the specified directory.
If the directory does not exist or if there is no index in it.
indexExists
public static boolean indexExists(
Filedirectory
)
Returns true if an index exists at the specified directory.
If the directory does not exist or if there is no index in it.
indexExists
public static boolean indexExists(
Stringdirectory
)
Returns true if an index exists at the specified directory.
If the directory does not exist or if there is no index in it.
false is returned.
isLocked
public static boolean isLocked(
Directorydirectory
)
throws
IOException
Returns true iff the index in the named directory is
currently locked.
isLocked
public static boolean isLocked(
Stringdirectory
)
throws
IOException
Returns true iff the index in the named directory is
currently locked.
lastModified
public static long lastModified(
Directorydirectory
)
throws
IOException
Returns the time the index in the named directory was last modified.
Synchronization of IndexReader and IndexWriter instances is
no longer done via time stamps of the segments file since the time resolution
depends on the hardware platform. Instead, a version number is maintained
within the segments file, which is incremented everytime when the index is
changed.
lastModified
public static long lastModified(
Filedirectory
)
throws
IOException
Returns the time the index in the named directory was last modified.
Synchronization of IndexReader and IndexWriter instances is
no longer done via time stamps of the segments file since the time resolution
depends on the hardware platform. Instead, a version number is maintained
within the segments file, which is incremented everytime when the index is
changed.
lastModified
public static long lastModified(
Stringdirectory
)
throws
IOException
Returns the time the index in the named directory was last modified.
Synchronization of IndexReader and IndexWriter instances is
no longer done via time stamps of the segments file since the time resolution
depends on the hardware platform. Instead, a version number is maintained
within the segments file, which is incremented everytime when the index is
changed.
Forcibly unlocks the index in the named directory.
Caution: this should only be used by failure recovery code,
when it is known that no other process nor thread is in fact
currently accessing this index.
Instance Methods
close
public final synchronized void close(
)
throws
IOException
Closes files associated with this index.
Also saves any new deletions to disk.
No other methods should be called after this has been called.
commit
protected final synchronized void commit(
)
throws
IOException
Commit changes resulting from delete, undeleteAll, or setNorm operations
delete
public final synchronized void delete(
int docNum
)
throws
IOException
Deletes the document numbered docNum. Once a document is
deleted it will not appear in TermDocs or TermPostitions enumerations.
Attempts to read its field with the document
method will result in an error. The presence of this document may still be
reflected in the docFreq statistic, though
this will be corrected eventually as the index is further modified.
delete
public final int delete(
Termterm
)
throws
IOException
Deletes all documents containing term.
This is useful if one uses a document field to hold a unique ID string for
the document. Then to delete such a document, one merely constructs a
term with the appropriate field and the unique ID string as its text and
passes it to this method. Returns the number of documents deleted.
Returns a list of all unique field names that exist in the index pointed
to by this IndexReader.
getFieldNames
public abstract Collection getFieldNames(
boolean indexed
)
throws
IOException
Returns a list of all unique field names that exist in the index pointed
to by this IndexReader. The boolean argument specifies whether the fields
returned are indexed or not.
getIndexedFieldNames
public abstract Collection getIndexedFieldNames(
boolean storedTermVector
)
Return a term frequency vector for the specified document and field. The
vector returned contains terms and frequencies for those terms in
the specified field of this document, if the field had storeTermVector
flag set. If the flag was not set, the method returns null.
Return an array of term frequency vectors for the specified document.
The array contains a vector for each vectorized field in the document.
Each vector contains terms and frequencies for all terms
in a given vectorized field.
If no such fields existed, the method returns null.
hasDeletions
public abstract boolean hasDeletions(
)
Returns true if any documents have been deleted
isDeleted
public abstract boolean isDeleted(
int n
)
Returns true if document n has been deleted
maxDoc
public abstract int maxDoc(
)
Returns one greater than the largest possible document number.
This may be used to, e.g., determine how big to allocate an array which
will have an element for every document number in an index.
norms
public abstract byte[] norms(
Stringfield
)
throws
IOException
Returns the byte-encoded normalization factor for the named field of
every document. This is used by the search code to score documents.
norms
public abstract void norms(
Stringfield,
byte[] bytes,
int offset
)
throws
IOException
Reads the byte-encoded normalization factor for the named field of every
document. This is used by the search code to score documents.
numDocs
public abstract int numDocs(
)
Returns the number of documents in this index.
setNorm
public final synchronized void setNorm(
int doc,
Stringfield,
byte value
)
throws
IOException
Expert: Resets the normalization factor for the named field of the named
document. The norm represents the product of the field's boost and its normalization. Thus, to preserve the length normalization
values when resetting this, one should base the new value upon the old.
setNorm
public void setNorm(
int doc,
Stringfield,
float value
)
throws
IOException
Expert: Resets the normalization factor for the named field of the named
document.
Returns an enumeration of all the documents which contain
term. For each document, the document number, the frequency of
the term in that document is also provided, for use in search scoring.
Thus, this method implements the mapping:
Term => <docNum, freq>*
The enumeration is ordered by document number. Each document number
is greater than all that precede it in the enumeration.
Returns an enumeration of all the documents which contain
term. For each document, in addition to the document number
and frequency of the term in that document, a list of all of the ordinal
positions of the term in the document is available. Thus, this method
implements the mapping:
Term => <docNum, freq,
<pos1, pos2, ...
posfreq-1>
>*
This positional information faciliates phrase and proximity searching.
The enumeration is ordered by document number. Each document number is
greater than all that precede it in the enumeration.
Returns an enumeration of all the terms in the index.
The enumeration is ordered by Term.compareTo(). Each term
is greater than all that precede it in the enumeration.
Returns an enumeration of all terms after a given term.
The enumeration is ordered by Term.compareTo(). Each term
is greater than all that precede it in the enumeration.
undeleteAll
public final synchronized void undeleteAll(
)
throws
IOException
Undeletes all documents currently marked as deleted in this index.