09 Lucene索引库查询 - query子类查询

简介: 09 Lucene索引库查询 - query子类查询

MatchAllDocsQuery

使用MatchAllDocsQuery查询索引目录中的所有文档

@Test
public void testMatchAllDocsQuery() throws Exception {
  IndexSearcher indexSearcher = getIndexSearcher();
  //创建查询条件
  Query query = new MatchAllDocsQuery();
  //执行查询
  printResult(query, indexSearcher);
}

TermQuery

TermQuery,通过项查询,TermQuery不使用分析器所以建议匹配不分词的Field域查询,比如订单号、分类ID号等。

指定要查询的域和要查询的关键词。

//使用Termquery查询
@Test
public void testTermQuery() throws Exception {
  IndexSearcher indexSearcher = getIndexSearcher();
  //创建查询对象
  Query query = new TermQuery(new Term("content", "lucene"));
  //执行查询
  TopDocs topDocs = indexSearcher.search(query, 10);
  //共查询到的document个数
  System.out.println("查询结果总数量:" + topDocs.totalHits);
  //遍历查询结果
  for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
    Document document = indexSearcher.doc(scoreDoc.doc);
    System.out.println(document.get("filename"));
    //System.out.println(document.get("content"));
    System.out.println(document.get("path"));
    System.out.println(document.get("size"));
  }
  //关闭indexreader
  indexSearcher.getIndexReader().close();
}

NumericRangeQuery

可以根据数值范围查询。

//数值范围查询
@Test
public void testNumericRangeQuery() throws Exception {
  IndexSearcher indexSearcher = getIndexSearcher();
  //创建查询
  //参数:
  //1.域名
  //2.最小值
  //3.最大值
  //4.是否包含最小值
  //5.是否包含最大值
  Query query = NumericRangeQuery.newLongRange("size", 1l, 1000l, true, true);
  //执行查询
  printResult(query, indexSearcher);
}

BooleanQuery

可以组合查询条件。

//组合条件查询
@Test
public void testBooleanQuery() throws Exception {
  IndexSearcher indexSearcher = getIndexSearcher();
  //创建一个布尔查询对象
  BooleanQuery query = new BooleanQuery();
  //创建第一个查询条件
  Query query1 = new TermQuery(new Term("filename", "apache"));
  Query query2 = new TermQuery(new Term("content", "apache"));
  //组合查询条件
  query.add(query1, Occur.MUST);
  query.add(query2, Occur.MUST);
  //执行查询
  printResult(query, indexSearcher);
}

Occur.MUST: 必须满足此条件,相当于and

Occur.SHOULD: 应该满足,但是不满足也可以,相当于or

Occur.MUST_NOT: 必须不满足。相当于not

目录
相关文章
|
Java Apache 索引
10 Lucene索引库查询 - queryparser查询
10 Lucene索引库查询 - queryparser查询
106 0
|
SQL 数据库 索引
08Lucene索引库查询 - 介绍
08Lucene索引库查询 - 介绍
57 0
|
索引
07Lucene索引库的修改
07Lucene索引库的修改
35 0
|
存储 缓存 关系型数据库
MySQL-索引优化篇(1)_安装演示库 & [前缀索引、联合索引、覆盖索引] & explain参数
MySQL-索引优化篇(1)_安装演示库 & [前缀索引、联合索引、覆盖索引] & explain参数
79 0
|
关系型数据库 MySQL 索引
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(四)
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(四)
141 0
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(四)
|
SQL 关系型数据库 MySQL
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(二)
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(二)
158 0
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(二)
|
关系型数据库 MySQL 索引
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(三)
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(三)
246 0
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(三)
|
关系型数据库 MySQL 索引
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(一)
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(一)
142 0
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(一)
|
SQL 监控 关系型数据库
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(五)
MYSQL性能调优05_覆盖索引、索引下推、如何选择合适的索引、Order by与Group by优化、索引设计原则(五)
171 0
|
SQL 关系型数据库 数据库
PostgreSQL 设计优化case - 大宽表任意字段组合查询索引如何选择(btree, gin, rum) - (含单个索引列数超过32列的方法)
标签 PostgreSQL , adhoc查询 , 大宽表 , 任意字段组合查询 , 索引 , btree , gin , rum 背景 大宽表,任意字段组合查询,透视。是实时分析系统中的常见需求: 1、实时写入。
2672 0