lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Engels" <>
Subject RE: [jira] Created: (LUCENE-584) Decouple Filter from BitSet
Date Wed, 31 May 2006 13:30:31 GMT
This design "seems" wrong, since it does not support 'next set bit', which
will kill performance in many cases.

Why not use:

interface Filter {
    boolean include(int docnum);
    int next(int docnum);

It is easy to create a implementation FilterBits as

class FilterBits implements Filter
    BitSet bits;
    FilterBits(BitSet bits) {
         this.bits = bits;
    boolean include(int docnum) {
         return bits.get(docnum);
    int next(int docnum) {
         return bits.nextSetBit(docnum);

But other more computational Filter implementations can easily be created.

-----Original Message-----
From: Peter Schäfer (JIRA) [] 
Sent: Wednesday, May 31, 2006 6:48 AM
Subject: [jira] Created: (LUCENE-584) Decouple Filter from BitSet

Decouple Filter from BitSet

         Key: LUCENE-584
     Project: Lucene - Java
        Type: Improvement

  Components: Search  
    Versions: 2.0.1    
    Reporter: Peter Schäfer
    Priority: Minor


public abstract class Filter implements {
  public abstract AbstractBitSet bits(IndexReader reader) throws
IOException; }

public interface AbstractBitSet
  public boolean get(int index);


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.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

To unsubscribe, e-mail:
For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message