You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Paul Elschot (JIRA)" <ji...@apache.org> on 2008/10/22 20:33:44 UTC
[jira] Commented: (LUCENE-1427) QueryWrapperFilter should not do
scoring
[ https://issues.apache.org/jira/browse/LUCENE-1427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12641930#action_12641930 ]
Paul Elschot commented on LUCENE-1427:
--------------------------------------
Indeed a simple win, but it can be even simpler (untested):
{code}
return new DocIdSet() {
public DocIdSetIterator iterator() {
return scorer;
}
};
{code}
This DocIdSetIterator should be used only once, so it's best to cache it in a CachingWrapperFilter, and the javadocs could indicate that.
See also LUCENE-1296, which allows the choice of a supporting data structure other than OpenBitSet.
> 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: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org