lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Busch (JIRA)" <>
Subject [jira] Updated: (LUCENE-584) Decouple Filter from BitSet
Date Mon, 03 Dec 2007 05:54:43 GMT


Michael Busch updated LUCENE-584:

    Attachment: lucene-584-take2.patch

OK, here's a new version of the patch.
- Removed MatchFilter entirely.
- Filter.bits(IndexReader) is now deprecated and not abstract anymore. 
Filter.bits(IndexReader) returns null, and Filter.matcher(IndexReader)
returns the new BitSetMatcher. This allows to create new Filters that 
only implement the new getMatcher(IndexReader) method. Existing filters
on the other hand will still work together with the BitSetMatcher.

- The new class BitSetFilter extends Filter and defines the abstract
method bits(IndexReader), just as Filter did before this patch.

- I deprecated also CachingWrapperFilter and RemoteCachingWrapperFilter
and added corresponding CachingBitSetFilter and RemoteCachingBitSetFilter
which do essentially the same but only accept BitSetFilters.

All testcases pass and believe this should be fully backwards compatible.
Also, all core classes that call Filter.bits() are deprecated themselves.

In Lucene 3.0 we should make the following changes:
- Remove Filter.bits() and define Filter.getMatcher() abstract.
- Remove CachingWrapperFilter and RemoteCachingWrapperFilter
(and corresponding testcases)
- Add new matchers, like the OpenBitSetMatcher and SortedVIntMatcher
and add the DefaultMatcher class. (these classes are all located in
Paul's patch files)

> Decouple Filter from BitSet
> ---------------------------
>                 Key: LUCENE-584
>                 URL:
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Search
>    Affects Versions: 2.0.1
>            Reporter: Peter Schäfer
>            Assignee: Michael Busch
>            Priority: Minor
>         Attachments: bench-diff.txt, bench-diff.txt, lucene-584-take2.patch, lucene-584.patch,
Matcher-20070905-2default.patch, Matcher-20070905-3core.patch, Matcher-20071122-1ground.patch,
> {code}
> package;
> public abstract class Filter implements 
> {
>   public abstract AbstractBitSet bits(IndexReader reader) throws IOException;
> }
> public interface AbstractBitSet 
> {
>   public boolean get(int index);
> }
> {code}
> It would be useful if the method =Filter.bits()= returned an abstract interface, instead
of =java.util.BitSet=.
> Use case: there is a very large index, and, depending on the user's privileges, only
a small portion of the index is actually visible.
> Sparsely populated =java.util.BitSet=s are not efficient and waste lots of memory. It
would be desirable to have an alternative BitSet implementation with smaller memory footprint.
> Though it _is_ possibly to derive classes from =java.util.BitSet=, it was obviously not
designed for that purpose.
> That's why I propose to use an interface instead. The default implementation could still
delegate to =java.util.BitSet=.

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:
For additional commands, e-mail:

View raw message