Lucene in Action阅读笔记(3) Query 类型总结--Yin

为了实现学霸中复杂的搜索要求,我通读了《Lucene in Action》中的Query一章,Lucene支持多重查询形式,总有一种适合学霸~~

Searching by term: TermQuery

作用:搜索特定Field中包含特定Term的记录

例子:subject为学科集合,搜索“数据挖掘”类别下的记录

Term t = new Term("subject", "data mining");
Query query = new TermQuery(t);
TopDocs docs = searcher.search(query, 10);

Searching within a term range: TermRangeQuery

作用:搜索一个field下的值在一定范围内的所有记录

例子:搜索文档名字的按照ascii排序,在'a',和‘c’之间的文档

TermRangeQuery query = new TermRangeQuery("document", "a", "c",
true, true);//true代表不包括端点

Searching within a numeric range: NumericRangeQuery

作用:搜索一个field下的值在一定范围内的所有记录

例子:搜索出版年份在2010至2012年的文献

NumericRangeQuery query = NumericRangeQuery.newIntRange("pubmonth",
2010,
2012,
false,
false);
TopDocs matches = searcher.search(query, 10);

限制条件:只能用于NumericField

《未完待续》

 

posted @ 2012-12-03 23:25  MagicCode1023  阅读(297)  评论(0编辑  收藏  举报