Hello,
Is there a way to supply a new Scorer implementation to an existing query?
From what I've been able to understand, the only way to provide a new
scorer is to change the scorer() method Weight, which in itself requires
implementing a new Weight, which in itself requires implementing a whole
new Query. Is there something I am missing here?
To be more concrete about what I want to achieve (maybe there is a
different / better way):
I would like to collect the *match positions* of several sub-queries, for
all matching documents. The ideal interface would be to perform search as
usual, and supply a collector that has access and collects this
information. Alternatively, to have it available in the returned results
object.
The needed information is available during search (in the internal
iterators), but I did not find a way to access it. The Weight.matches() and
SpanWeight.getSpans() methods return the iterators I'd need, but they also
require a LeafReaderContext, which I believe is only available during
search? So I thought I'd create a scorer (that gets a context and gets
called for the relevant document), but I do not see a way to supply a
custom scorer.
Any tips are greatly appreciated.
Thanks!
Yoav
Is there a way to supply a new Scorer implementation to an existing query?
From what I've been able to understand, the only way to provide a new
scorer is to change the scorer() method Weight, which in itself requires
implementing a new Weight, which in itself requires implementing a whole
new Query. Is there something I am missing here?
To be more concrete about what I want to achieve (maybe there is a
different / better way):
I would like to collect the *match positions* of several sub-queries, for
all matching documents. The ideal interface would be to perform search as
usual, and supply a collector that has access and collects this
information. Alternatively, to have it available in the returned results
object.
The needed information is available during search (in the internal
iterators), but I did not find a way to access it. The Weight.matches() and
SpanWeight.getSpans() methods return the iterators I'd need, but they also
require a LeafReaderContext, which I believe is only available during
search? So I thought I'd create a scorer (that gets a context and gets
called for the relevant document), but I do not see a way to supply a
custom scorer.
Any tips are greatly appreciated.
Thanks!
Yoav