0
点赞
收藏
分享

微信扫一扫

8、学习Lucene3.5索引搜索之TermRange

1、具体的查询语句

/**
* 执行具体的查询
*/
private void excuteQuery(IndexSearcher indexSearcher, Query query) {
try {
TopDocs topDocs = indexSearcher.search(query, 2);
System.out.println("查询出来的总条数:"+topDocs.totalHits);
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
if (isNotEmpty(scoreDocs)){
for (ScoreDoc scoreDoc:scoreDocs){
Document document = indexSearcher.doc(scoreDoc.doc);
System.out.println("("+scoreDoc.doc+")"+document.get("name")+"["+document.get("email")+"]-->"+document.get("id")
+ "," +document.get("attach") );
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
closeIndexSearcher(indexSearcher);
}
}

2、精确查询

/**
* Lucene搜索之TermQuery
*/
public void searchByTermQuery(String field, String value){
Query query = new TermQuery(new Term(field, value));
IndexSearcher indexSearcher = createIndexSearcher();
excuteQuery(indexSearcher,query);
}


3、文本范围查询

/**
* Lucene搜索之TermRangeQuery
*/
public void searchByTermRangeQuery(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper){
IndexSearcher indexSearcher = createIndexSearcher();
/**
* TermRangeQuery(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper):
* 参数一:域
* 参数二:开始字符
* 参数三:结束字符
* 参数四:是否包含开头
* 参数五:是否包含结尾
*/
Query query = new TermRangeQuery(field, lowerTerm, upperTerm, includeLower, includeUpper);
excuteQuery(indexSearcher,query);
}


4、数字范围查询

/**
* Lucene搜索之NumericRangeQuery(查询数字范围)
*/
public void searchByNumericRangeQuery(String field,
Integer min, Integer max, boolean minInclusive, boolean maxInclusive){
IndexSearcher indexSearcher = createIndexSearcher();
/**
* TermRangeQuery(String field, Integer min, Integer max, boolean minInclusive, boolean maxInclusive):
* 参数一:域
* 参数二:最小值
* 参数三:最大值
* 参数四:是否包含最小值
* 参数五:是否包含最大值
*/
Query query = NumericRangeQuery.newIntRange(field,min,max,minInclusive,maxInclusive);
excuteQuery(indexSearcher, query);
}




举报

相关推荐

0 条评论