本文共 1391 字,大约阅读时间需要 4 分钟。
/** * 排序查询 * * @param querystr * 查找匹配的字符串 * @param domain * 查找内容的域 * @param filter * 过滤器 */ public void SearchByFilter(String querystr, String domain, Filter filter) { TopDocs docs = null; IndexSearcher searcher = this.getSearcher(); try { QueryParser parser = new QueryParser(Version.LUCENE_35, domain, new StandardAnalyzer(Version.LUCENE_35)); Query query = parser.parse(querystr); if (filter == null) { docs = searcher.search(query, 150); } else { docs = searcher.search(query,filter,150); } // 输出信息 ScoreDoc[] sds = docs.scoreDocs; Document d = null; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); for (ScoreDoc s : sds) { d = searcher.doc(s.doc); System.out.println(s.doc+"->" +s.score+"->" +d.get("filename")+"->" +d.get("size")+"->" +sdf.format(new Date(Long.valueOf(d.get("date"))))); } } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}
##############################
@Test
public void testFilterSearch(){ Filter filter=null; //使用TermRangeFilter进行范围过滤搜索 //1.域 2.起始位置 3.结束位置 4.是否包含起始位置 5.是否包含结束位置 filter=new TermRangeFilter("filename","chs.a","chs.txt",true,true); //使用NumericRangeFilter进行过滤 filter=NumericRangeFilter.newIntRange("size", 10, 5000, true, true); //使用QueryWrapperFilter进行过滤 filter=new QueryWrapperFilter(new WildcardQuery(new Term("filename", "*.ini"))); su.SearchByFilter("中国", "content", filter); }转载地址:http://hnebi.baihongyu.com/