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
《未完待续》