Method Reopen
Reopen()
Refreshes an IndexReader if the index has changed since this instance was (re)opened.
Opening an IndexReader is an expensive operation. This method can be used to refresh an existing IndexReader to reduce these costs. This method tries to only load segments that have changed or were created after the IndexReader was (re)opened.
If the index has not changed since this instance was (re)opened, then this
call is a NOOP and returns this instance. Otherwise, a new instance is
returned. The old instance is not closed and remains usable.
If the reader is reopened, even though they share
resources internally, it's safe to make changes
(deletions, norms) with the new reader. All shared
mutable state obeys "copy on write" semantics to ensure
the changes are not seen by other readers.
You can determine whether a reader was actually reopened by comparing the old instance with the instance returned by this method:
IndexReader reader = ...
...
IndexReader newReader = r.reopen();
if (newReader != reader) {
... // reader was reopened
reader.close();
}
reader = newReader;
...
Be sure to synchronize that code so that other threads, if present, can never use reader after it has been closed and before it's switched to newReader.
NOTE: If this reader is a near real-time reader (obtained from GetReader(), reopen() will simply call writer.getReader() again for you, though this may change in the future.
Declaration
public virtual IndexReader Reopen()
Returns
Type | Description |
---|---|
IndexReader |
Reopen(Boolean)
Just like Reopen(), except you can change the readOnly of the original reader. If the index is unchanged but readOnly is different then a new reader will be returned.
Declaration
public virtual IndexReader Reopen(bool openReadOnly)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | openReadOnly |
Returns
Type | Description |
---|---|
IndexReader |
Reopen(IndexCommit)
Expert: reopen this reader on a specific commit point. This always returns a readOnly reader. If the specified commit point matches what this reader is already on, and this reader is already readOnly, then this same instance is returned; if it is not already readOnly, a readOnly clone is returned.
Declaration
public virtual IndexReader Reopen(IndexCommit commit)
Parameters
Type | Name | Description |
---|---|---|
IndexCommit | commit |
Returns
Type | Description |
---|---|
IndexReader |