lucene多条件查询

lucene多条件查询

  1. 使用booleanQuery进行组合
  2.  特点是使用查询关键词已经是最小分词单元,不需要分词
  3. booleanQuery本身是一个布尔子句的容器,可以将lucene提供的Query子类添加到其中,标明子句之间的关系,组合条件后进行索引库查询
         // 模糊条件
        WildcardQuery w = new WildcardQuery(new Term(queryField,keyWord));
        // 词条查询
        TermQuery t = new TermQuery(new Term(queryField, keyWord));
        // 相似度查询
        FuzzyQuery f = new FuzzyQuery(new Term(queryField, keyWord));
        //参数1:查询域字段名称
        //参数2:指定查询起始角标
        //参数3:指定查询结束角标
        //参数4:左边开[不包含](闭[包含]: true)区间
        //参数5:右边开(闭 : true)区间
        NumericRangeQuery n = NumericRangeQuery.newLongRange(queryField, 5L, 15L, false, true);
        // 查询所有
        MatchAllDocsQuery m = new MatchAllDocsQuery();
        BooleanQuery.Builder b = new BooleanQuery.Builder();
        组合关系代表的意思如下:
//        1、MUST和MUST表示“与”的关系,即“交集”。
//        2、MUST和MUST_NOT前者包含后者不包含。
//        3、MUST_NOT和MUST_NOT没意义
//        4、SHOULD与MUST表示MUST,SHOULD失去意义;
//        5、SHOULD与MUST_NOT相当于MUST与MUST_NOT。
//        6、SHOULD与SHOULD表示“或”的关系,即“并集”。
        b.add(w, BooleanClause.Occur.MUST);
        b.add(t, BooleanClause.Occur.MUST_NOT);
        b.add(f, BooleanClause.Occur.SHOULD);
        b.add(n, BooleanClause.Occur.MUST);
        b.add(m, BooleanClause.Occur.MUST);
        BooleanQuery query = b.build();
        // 读取索引库索引
        DirectoryReader reader = DirectoryReader.open(FSDirectory
                .open(Paths.get(filePath)));
        // 创建检索索引库核心对象
        IndexSearcher indexSearcher = new IndexSearcher(reader);
        TopDocs topDocs = indexSearcher.search(query,查询条数);
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值