package com.browseengine.bobo.facets.filter; import java.io.IOException; import org.apache.lucene.index.AtomicReader; import org.apache.lucene.index.AtomicReaderContext; import org.apache.lucene.search.DocIdSet; import org.apache.lucene.search.Filter; import org.apache.lucene.util.Bits; import com.browseengine.bobo.api.BoboSegmentReader; import com.browseengine.bobo.docidset.RandomAccessDocIdSet; public abstract class RandomAccessFilter extends Filter { @Override public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException { AtomicReader reader = context.reader(); if (reader instanceof BoboSegmentReader) { return getRandomAccessDocIdSet((BoboSegmentReader) reader); } else { throw new IllegalStateException("reader not instance of " + BoboSegmentReader.class); } } public abstract RandomAccessDocIdSet getRandomAccessDocIdSet(BoboSegmentReader reader) throws IOException; public double getFacetSelectivity(BoboSegmentReader reader) { return 0.50; } }