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

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

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

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

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]

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

有如此多的query可以用

你不妨自己寻找,出现问题我们可以一起交流
[code="java"]

{@link TermQuery}
{@link MultiTermQuery}
{@link BooleanQuery}
{@link WildcardQuery}
{@link PhraseQuery}
{@link PrefixQuery}
{@link MultiPhraseQuery}
{@link FuzzyQuery}
{@link TermRangeQuery}
{@link NumericRangeQuery}
{@link org.apache.lucene.search.spans.SpanQuery}
[/code]