On Fri, Jan 09, 2009 at 08:11:31PM +0100, Karl Wettin wrote:

> SSD is pretty close to RAM when it comes to seeking. Wouldn't that  
> mean that a bitset stored on an SSD would be more or less as fast as a  
> bitset in RAM? 

Provided that your index can fit in the system i/o cache and stay there, you
get the speed of RAM regardless of the underlying permanent storage type.
There's no reason to wait on SSDs before implementing such a feature.

One thing we've contemplated in Lucy/KS is a FilterWriter, which would write
out cached bitsets at index time.  Adding that on would look like something
this:

  public class MyArchitecture extends Architecture {
    public ArrayList<SegDataWriter> segDataWriters(InvIndex invindex, 
                                                   Segment segment) {
      ArrayList<SegDataWriter> writers 
          = super.segDataWriters(invindex, segment);
      writers.add(new FilterWriter(invindex, segment));
      return writers;
    }
  }
  public class MySchema extends Schema {
    public Architecture architecture() { return new MyArchitecture(); }
    public MySchema() {
      TextField textFieldSpec = new TextField(new PolyAnalyzer("en"));
      specField("title", textFieldSpec);
      specField("content", textFieldSpec);
    }
  }

  IndexWriter writer = new IndexWriter(new MySchema().open("/path/to/index"));

This isn't quite the same thing, because I believe you're talking about
adaptively caching filters on the fly at search time.  However, I expect this
to work quite well when a finite set of filters is known in advance, e.g. for
faceting categories.

Marvin Humphrey



---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to