java.lang.Object | ||
↳ | org.apache.lucene.search.Searcher | |
↳ | org.apache.lucene.search.IndexSearcher |
Implements search over a single IndexReader.
Applications usually need only call the inherited
search(Query, int)
or search(Query, Filter, int)
methods. For
performance reasons, if your index is unchanging, you
should share a single IndexSearcher instance across
multiple searches instead of creating a new one
per-search. If your index has changed and you wish to
see the changes reflected in searching, you should
use reopen()
to obtain a new reader and
then create a new IndexSearcher from that. Also, for
low-latency turnaround it's best to use a near-real-time
reader (open(IndexWriter, boolean)
).
Once you have a new IndexReader
, it's relatively
cheap to create a new IndexSearcher from it.
NOTE:
instances are completely
thread safe, meaning multiple threads can call any of its
methods, concurrently. If your application requires
external synchronization, you should not
synchronize on the IndexSearcher
IndexSearcher
instance;
use your own (non-Lucene) objects instead.
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
docStarts | |||||||||||
subReaders | |||||||||||
subSearchers |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Creates a searcher searching the index in the named
directory, with readOnly=true
| |||||||||||
Creates a searcher searching the index in the named
directory.
| |||||||||||
Creates a searcher searching the provided index.
| |||||||||||
Runs searches for each segment separately, using the
provided ExecutorService.
| |||||||||||
Expert: directly specify the reader, subReaders and
their docID starts.
| |||||||||||
Expert: directly specify the reader, subReaders and
their docID starts, and an ExecutorService.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Note that the underlying IndexReader is not closed, if
IndexSearcher was constructed with IndexSearcher(IndexReader r).
| |||||||||||
Returns the stored fields of document
i . | |||||||||||
Get the
Document at the n th position. | |||||||||||
Returns total docFreq for this term.
| |||||||||||
Returns an Explanation that describes how
doc scored against
query . | |||||||||||
Expert: low-level implementation method
Returns an Explanation that describes how
doc scored against
weight . | |||||||||||
Return the
IndexReader this searches. | |||||||||||
Expert: Return the Similarity implementation used by this Searcher.
| |||||||||||
Returns the atomic subReaders used by this searcher.
| |||||||||||
Expert: Returns one greater than the largest possible document number.
| |||||||||||
Expert: called to re-write queries into primitive queries.
| |||||||||||
Lower-level search API.
| |||||||||||
Finds the top
n
hits for query , applying filter if non-null. | |||||||||||
Finds the top
n
hits for query . | |||||||||||
Search implementation with arbitrary sorting and no filter.
| |||||||||||
Lower-level search API.
| |||||||||||
Search implementation with arbitrary sorting.
| |||||||||||
Lower-level search API.
| |||||||||||
Expert: Low-level search implementation.
| |||||||||||
Expert: Low-level search implementation with arbitrary sorting.
| |||||||||||
By default, no scores are computed when sorting by
field (using
search(Query, Filter, int, Sort) ). | |||||||||||
Expert: Set the Similarity implementation used by this Searcher.
| |||||||||||
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
creates a weight for
query | |||||||||||
Just like
search(Weight, Filter, int, Sort) , but you choose
whether or not the fields in the returned FieldDoc instances should
be set by specifying fillFields. |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() |
Creates a searcher searching the index in the named directory, with readOnly=true
path | directory where IndexReader will be opened |
---|
CorruptIndexException | if the index is corrupt |
---|---|
IOException | if there is a low-level IO error |
Creates a searcher searching the index in the named directory. You should pass readOnly=true, since it gives much better concurrent performance, unless you intend to do write operations (delete documents or change norms) with the underlying IndexReader.
path | directory where IndexReader will be opened |
---|---|
readOnly | if true, the underlying IndexReader will be opened readOnly |
CorruptIndexException | if the index is corrupt |
---|---|
IOException | if there is a low-level IO error |
Runs searches for each segment separately, using the
provided ExecutorService. IndexSearcher will not
shutdown/awaitTermination this ExecutorService on
close; you must do so, eventually, on your own. NOTE:
if you are using NIOFSDirectory
, do not use
the shutdownNow method of ExecutorService as this uses
Thread.interrupt under-the-hood which can silently
close file descriptors (see LUCENE-2239).
Expert: directly specify the reader, subReaders and their docID starts.
Expert: directly specify the reader, subReaders and
their docID starts, and an ExecutorService. In this
case, each segment will be separately searched using the
ExecutorService. IndexSearcher will not
shutdown/awaitTermination this ExecutorService on
close; you must do so, eventually, on your own. NOTE:
if you are using NIOFSDirectory
, do not use
the shutdownNow method of ExecutorService as this uses
Thread.interrupt under-the-hood which can silently
close file descriptors (see LUCENE-2239).
Note that the underlying IndexReader is not closed, if IndexSearcher was constructed with IndexSearcher(IndexReader r). If the IndexReader was supplied implicitly by specifying a directory, then the IndexReader is closed.
IOException |
---|
Returns the stored fields of document i
.
CorruptIndexException | |
---|---|
IOException |
Get the Document
at the n
th position. The FieldSelector
may be used to determine what Field
s to load and how they should be loaded.
NOTE: If the underlying Reader (more specifically, the underlying FieldsReader
) is closed before the lazy Field
is
loaded an exception may be thrown. If you want the value of a lazy Field
to be available after closing you must
explicitly load it or fetch the Document again with a new loader.
docID | Get the document at the n th position |
---|---|
fieldSelector | The FieldSelector to use to determine what Fields should be loaded on the Document. May be null, in which case all Fields will be loaded. |
Document
at the nth positionCorruptIndexException | |
---|---|
IOException |
Returns an Explanation that describes how doc
scored against
query
.
This is intended to be used in developing Similarity implementations, and, for good performance, should not be displayed with every hit. Computing an explanation is as expensive as executing the query over the entire index.
IOException |
---|
Expert: low-level implementation method
Returns an Explanation that describes how doc
scored against
weight
.
This is intended to be used in developing Similarity implementations, and, for good performance, should not be displayed with every hit. Computing an explanation is as expensive as executing the query over the entire index.
Applications should call explain(Query, int)
.
Expert: Return the Similarity implementation used by this Searcher.
This defaults to the current value of getDefault()
.
Expert: Returns one greater than the largest possible document number.
Lower-level search API.
collect(int)
is called for every matching
document.
Collector-based access to remote indexes is discouraged.
Applications should only use this if they need all of the
matching documents. The high-level search API (search(Query, Filter, int)
) is usually more efficient, as it skips
non-high-scoring hits.
query | to match documents |
---|---|
filter | if non-null, used to permit documents to be collected. |
results | to receive hits |
Finds the top n
hits for query
, applying filter
if non-null.
Search implementation with arbitrary sorting and no filter.
query | The query to search for |
---|---|
n | Return only the top n results |
sort | The Sort object |
Sort
instanceIOException |
---|
Lower-level search API.
collect(int)
is called for every document.
Collector-based access to remote indexes is discouraged.
Applications should only use this if they need all of the matching
documents. The high-level search API (search(Query, int)
) is
usually more efficient, as it skips non-high-scoring hits.
weight | to match documents |
---|---|
filter | if non-null, used to permit documents to be collected. |
collector | to receive hits |
Search implementation with arbitrary sorting. Finds
the top n
hits for query
, applying
filter
if non-null, and sorting the hits by the criteria in
sort
.
NOTE: this does not compute scores by default; use
setDefaultFieldSortScoring(boolean, boolean)
to
enable scoring.
Lower-level search API.
collect(int)
is called for every matching document.
Applications should only use this if they need all of the
matching documents. The high-level search API (search(Query, int)
) is usually more efficient, as it skips
non-high-scoring hits.
Note: The score
passed to this method is a raw score.
In other words, the score will not necessarily be a float whose value is
between 0 and 1.
Expert: Low-level search implementation. Finds the top n
hits for query
, applying filter
if non-null.
Applications should usually call search(Query, int)
or
search(Query, Filter, int)
instead.
Expert: Low-level search implementation with arbitrary sorting. Finds
the top n
hits for query
, applying
filter
if non-null, and sorting the hits by the criteria in
sort
.
Applications should usually call search(Query, Filter, int, Sort)
instead.
By default, no scores are computed when sorting by
field (using search(Query, Filter, int, Sort)
).
You can change that, per IndexSearcher instance, by
calling this method. Note that this will incur a CPU
cost.
doTrackScores | If true, then scores are
returned for every matching document in TopFieldDocs . |
---|---|
doMaxScore | If true, then the max score for all matching docs is computed. |
Expert: Set the Similarity implementation used by this Searcher.
Just like search(Weight, Filter, int, Sort)
, but you choose
whether or not the fields in the returned FieldDoc
instances should
be set by specifying fillFields.
NOTE: this does not compute scores by default. If you
need scores, create a TopFieldCollector
instance by calling create(Sort, int, boolean, boolean, boolean, boolean)
and
then pass that to search(Weight, Filter, Collector)
.
IOException |
---|