public void searcherByFilter(String queryStr,Filter filter) {
try {
IndexSearcher searcher = getSearcher();
QueryParser parser = new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));
Query query = parser.parse(queryStr);
TopDocs tds = null;
if(filter!=null)
tds = searcher.search(query,filter,50);
else {
tds = searcher.search(query, 50);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
for(ScoreDoc sd:tds.scoreDocs) {
Document d = searcher.doc(sd.doc);
System.out.println(sd.doc+":("+sd.score+")" +
"["+d.get("filename")+"【"+d.get("path")+"】--->"+
d.get("size")+"-----"+sdf.format(new Date(Long.valueOf(d.get("date"))))+"]");
}
searcher.close();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void test02() {
Filter tr = new TermRangeFilter ("filename", "java.hhh", "java.she", true, true);
tr = NumericRangeFilter.newIntRange ("size", 500, 900, true, true);
//可以通过一个Query进行过滤
tr = new QueryWrapperFilter (new WildcardQuery(new Term("filename", "*.txt")));
st.searcherByFilter("java", tr);
}