在lucene3.0中,范围查询也有很大的变化,RangeQuery已经不推荐使用,使用TermRangeQuery和NumericRangeQuery两个替代。
TermRangeQuery:主要用于文本范围查找;
IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); // only searching,Searcher searcher = new IndexSearcher(reader);String field = "starttime";TermRangeQuery query = new TermRangeQuery(field, "2009年01月01日","2009年01月05日",true,true);ScoreDoc[] hits = searcher.search(query, null, topnum).scoreDocs;
NumericRangeQuery:要使用它,首先要使用NumericField 给数字建索引(当然这个的term就是数字的了)。如果你的term是文本,那就是使用TermRangeQuery 。