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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值