Lucene5.3中的Filter

最近在学习Lucene,使用的是5.3.0版本。

学习到filter的使用时,发现在Lucene5中filter的好多子类都过时了,例如

@Deprecated
public class TermFilter extends QueryWrapperFilter 
并且query方法也过时了
/** Finds the top <code>n</code>
   * hits for <code>query</code>, applying <code>filter</code> if non-null.
   *
   * @throws BooleanQuery.TooManyClauses If a query would exceed 
   *         {@link BooleanQuery#getMaxClauseCount()} clauses.
   * @deprecated Use {@link BooleanQuery boolean queries} with
   *              {@link BooleanClause.Occur#FILTER} clauses instead
   */
  @Deprecated
  public final TopDocs search(Query query, Filter filter, int n)
那怎么使用filter功能呢?
//在Lucene 5 中 filter的使用:
//filter是一种特殊的query
Query query = new TermQuery(new Term("title","lucene"));
Query filter1 = new TermQuery(new Term("subject","lucene"));
Query filter2 = NumericRangeQuery.newIntRange("pubmonth", 199908, 201005, true, true);

BooleanQuery booleanFilter = new BooleanQuery.Builder()
				.add(filter1, Occur.MUST)
				.add(filter2, Occur.MUST)
				.build();

QueryWrapperFilter filter = new QueryWrapperFilter(booleanFilter);

BooleanQuery booleanQuery = new BooleanQuery.Builder()
		.add(filter, Occur.FILTER)
		.add(query, Occur.MUST).build();
TopDocs topDocs = indexSearcher.search(booleanQuery, Integer.MAX_VALUE);
对滴,是通过    Occur.FILTER  标识对应的查询是filter,这个在查询是就会做对应的处理。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值