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

目录
相关文章
|
5月前
|
索引
Elasticsearch 精确查询:术语查询、多术语查询、主键查询、范围查询、存在查询、前缀查询、正则查询与通配符查询
Elasticsearch 精确查询:术语查询、多术语查询、主键查询、范围查询、存在查询、前缀查询、正则查询与通配符查询
|
存储 缓存 数据库
提高Djang查询速度的9种方法
在Web应用程序中,数据库查询是一个关键的环节。优化数据库查询可以显著提高应用程序的性能和响应速度。Django作为一个高度可扩展的Web框架,提供了多种方式来优化数据库查询。本文将介绍一些常用的Django数据库查询优化技巧,从入门到精通,帮助您构建高效的应用程序。
151 1
|
Java Apache 索引
10 Lucene索引库查询 - queryparser查询
10 Lucene索引库查询 - queryparser查询
108 0
|
SQL 数据库 索引
08Lucene索引库查询 - 介绍
08Lucene索引库查询 - 介绍
58 0
|
索引
07Lucene索引库的修改
07Lucene索引库的修改
36 0
|
存储 缓存 关系型数据库
MySQL-索引优化篇(1)_安装演示库 & [前缀索引、联合索引、覆盖索引] & explain参数
MySQL-索引优化篇(1)_安装演示库 & [前缀索引、联合索引、覆盖索引] & explain参数
79 0
|
Apache 数据格式 算法

相关课程

更多