比如我要搜索含“房间”一词的文档,同时将含有“白色”字眼的搜索结果给筛掉,请问应该怎么写呢?
之前从Lucene的API手册上发现有一个org.apache.lucene.search.TermsFilter的类可能可以实现这个功能,但在写代码的时候却老是引入不了这个类。不知道这个类放在哪个jar包里。。
当然,如果有其它更好的方法的话也可以分享一下。
比如我要搜索含“房间”一词的文档,同时将含有“白色”字眼的搜索结果给筛掉,请问应该怎么写呢?
之前从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]