lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hoss Man (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-857) Remove BitSet caching from QueryFilter
Date Thu, 05 Apr 2007 22:03:36 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-857?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12487116
] 

Hoss Man commented on LUCENE-857:
---------------------------------

>From email since i didn't notice Otis opened this issue already...

Date: Thu, 5 Apr 2007 14:24:31 -0700 (PDT)
To: java-dev@lucene.apache.org
Subject: Re: Caching in QueryFilter - why?

: Since caching is built into the public BitSet bits(IndexReader reader)
: method, I don't see a way to deprecate that, which means I'll just cut
: it out and document it in CHANGES.txt.  Anyone who wants QueryFilter
: caching will be able to get the caching back by wrapping the QueryFilter
: in your CachingWrapperFilter.

this seems like a potentially big surprise for people when upgrading ...
old code will continue to work fine without warning, just get a lot less
efficient.

If the concern is duplicated code, perhaps QueryFilter should be
deprecated and changed to be a subclass of CachingWrapperFilter, with a
constructor that takes in the Query and wraps it in some new class
(QueryWrapperFilter perhaps?)  that does the meaty part (collecting the
matches) ...

@deprecated use CachingWrapperFilter and QueryWrapperFilter directly
public class QueryFilter extends CachingWrapperFilter {
  public QueryFilter(Query query) {
    super(new QueryWrapperFilter(query));
  }
}

public class QueryWrapperFilter extends Filter {
  private Query query;
  public QueryWrapperFilter(Query query) {
    this.query = query;
  }
  public BitSet bits(IndexReader reader) throws IOException {
    final BitSet bits = new BitSet(reader.maxDoc());
    new IndexSearcher(reader).search(query, new HitCollector() {
      public final void collect(int doc, float score) {
        bits.set(doc);  // set bit for hit
      }
    });
    return bits;
  }
}


(obviously we need some toString, equals, and hashCode methods in here as well)


> Remove BitSet caching from QueryFilter
> --------------------------------------
>
>                 Key: LUCENE-857
>                 URL: https://issues.apache.org/jira/browse/LUCENE-857
>             Project: Lucene - Java
>          Issue Type: Improvement
>            Reporter: Otis Gospodnetic
>         Assigned To: Otis Gospodnetic
>            Priority: Minor
>         Attachments: LUCENE-857.patch
>
>
> Since caching is built into the public BitSet bits(IndexReader reader)  method, I don't
see a way to deprecate that, which means I'll just cut it out and document it in CHANGES.txt.
 Anyone who wants QueryFilter caching will be able to get the caching back by wrapping the
QueryFilter in the CachingWrapperFilter.

-- 
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


Mime
View raw message