/**
* 排序查询
*
* @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();
}
* 排序查询
*
* @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);
}