apache lucene cutom filter

来源:互联网 发布:php implode函数 编辑:程序博客网 时间:2024/06/03 03:30

apache filter 主要作用是缩小搜索范围,在结果返回之前进行过滤,比较典型的场合是某些文档有多种安全级别,最高级别的文档不能被搜到。

下面是一个例子,作个记录,以备后用。


/**

*只搜索句子中单词数不超过10个的句子

*这个需求当然可以采用NumericRangeQuery来实现,这里的Filter只是做个简单例子

*True 文档返回;false:文档不返回

*/

public class CustomFilter extends Filter{

    public static final int LENGTH = 10;

    public BigSet bits(IndexReader reader)throws IOException{

        BigSet bits = new BigSet(reader.maxDoc());

        bits.set(0,bits.size()-1);//先将整个集合置为True,表示所有的文档都能搜索到

        Term t = new  Term("sentece","lucene");

        TermDocs termDocs = reader.termDocs(term);

        while(termDocs.next()){

            bits.set(termDocs.doc(),false); // 遍历文档,将每个设置为false

        }

    }

}


原创粉丝点击