起个马甲好困难 2010-11-20 22:50
浏览 299
已采纳

Lucene如何将含有某一关键字的文档过滤掉?

比如我要搜索含“房间”一词的文档,同时将含有“白色”字眼的搜索结果给筛掉,请问应该怎么写呢?

之前从Lucene的API手册上发现有一个org.apache.lucene.search.TermsFilter的类可能可以实现这个功能,但在写代码的时候却老是引入不了这个类。不知道这个类放在哪个jar包里。。

当然,如果有其它更好的方法的话也可以分享一下。

  • 写回答

3条回答 默认 最新

  • beneo 2010-11-20 23:21
    关注

    TermsFilter不是要你引入的,而是要和FilteredQuery一起用的。。

    此外,[b]TermsFilter不是过滤掉你不要的,而是只获得含有这些terms的doc集合[/b]

    构建一个BooleanQuery

    [code="java"]
    BooleanQuery bq = new BooleanQuery();
    TermQuery tq = new TermQuery(new Term(k, v));

    // 添加你自己的查询
    bq.add(xx, BooleanClause.Occur.MUST);
    bq.add(tq, BooleanClause.Occur.MUST_NOT );

    searcher.search(bq, ...);
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?