[
https://issues.apache.org/jira/browse/LUCENE-1427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12643337#action_12643337
]
Paul Elschot commented on LUCENE-1427:
--------------------------------------
bq. ... are there other places where not having to provide a repeatable
iterator buys us some compelling freedom?
One might want to cache the Filter based on the version (last mod time) of the
index, and not based on the actual index reader. In that case the original
reader could not be available when the Filter is used.
I don't know whether that is compelling given the current cost of (re)opening
an index.
> QueryWrapperFilter should not do scoring
> ----------------------------------------
>
> Key: LUCENE-1427
> URL: https://issues.apache.org/jira/browse/LUCENE-1427
> Project: Lucene - Java
> Issue Type: Improvement
> Components: Search
> Reporter: Michael McCandless
> Assignee: Michael McCandless
> Priority: Minor
> Fix For: 2.9
>
>
> The purpose of QueryWrapperFilter is to simply filter to include the docIDs
> that match the query.
> Its implementation is wasteful now because it computes scores for those
> matching docs even though the score is unused. We could fix this by getting
> a Scorer and iterating through the docs without asking for the score:
> {code}
> Index: src/java/org/apache/lucene/search/QueryWrapperFilter.java
> ===================================================================
> --- src/java/org/apache/lucene/search/QueryWrapperFilter.java (revision
> 707060)
> +++ src/java/org/apache/lucene/search/QueryWrapperFilter.java (working copy)
> @@ -62,11 +62,9 @@
> public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
> final OpenBitSet bits = new OpenBitSet(reader.maxDoc());
>
> - new IndexSearcher(reader).search(query, new HitCollector() {
> - public final void collect(int doc, float score) {
> - bits.set(doc); // set bit for hit
> - }
> - });
> + final Scorer scorer = query.weight(new
> IndexSearcher(reader)).scorer(reader);
> + while(scorer.next())
> + bits.set(scorer.doc());
> return bits;
> }
> {code}
> Maybe I'm missing something, but this seams like a simple win?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]