10 Lucene索引库查询 - queryparser查询

简介: 10 Lucene索引库查询 - queryparser查询

通过QueryParser也可以创建Query,QueryParser提供一个Parse方法,此方法可以直接根据查询语法来查询。Query对象执行的查询语法可通过System.out.println(query);查询。

需要使用到分析器。建议创建索引时使用的分析器和查询索引时使用的分析器要一致。

QueryParser

需要加入queryParser依赖的jar包。

1.程序实现
@Test
public void testQueryParser() throws Exception {
  IndexSearcher indexSearcher = getIndexSearcher();
  //创建queryparser对象
  //第一个参数默认搜索的域
  //第二个参数就是分析器对象
  QueryParser queryParser = new QueryParser("content", new IKAnalyzer());
  Query query = queryParser.parse("Lucene是java开发的");
  //执行查询
  printResult(query, indexSearcher);
}
2.查询语法

1、基础的查询语法,关键词查询:

域名+“:”+搜索的关键字

例如:content:java

2、范围查询

域名+“:”+[最小值 TO 最大值]

例如:size:[1 TO 1000]

范围查询在lucene中不支持数值类型,支持字符串类型。在solr中支持数值类型。

3、组合条件查询

  • 1)+条件1 +条件2:两个条件之间是并且的关系and
    例如:+filename:apache +content:apache
  • 2)+条件1 条件2:必须满足第一个条件,应该满足第二个条件
    例如:+filename:apache content:apache
  • 3)条件1 条件2:两个条件满足其一即可。
    例如:filename:apache content:apache
  • 4)-条件1 条件2:必须不满足条件1,要满足条件2
    例如:-filename:apache content:apache
    20190510111046254_.png

第二种写法:

条件1 AND 条件2
条件1 OR 条件2
条件1 NOT 条件2

MulitFieldQueryParser

可以指定多个默认搜索域

@Test
public void testMultiFiledQueryParser() throws Exception {
  IndexSearcher indexSearcher = getIndexSearcher();
  //可以指定默认搜索的域是多个
  String[] fields = {"filename", "content"};
  //创建一个MulitFiledQueryParser对象
  MultiFieldQueryParser queryParser = new MultiFieldQueryParser(fields, new IKAnalyzer());
  Query query = queryParser.parse("java and apache");
  System.out.println(query);
  //执行查询
  printResult(query, indexSearcher);
}


目录
相关文章
|
自然语言处理 索引
09 Lucene索引库查询 - query子类查询
09 Lucene索引库查询 - query子类查询
46 0
|
SQL 数据库 索引
08Lucene索引库查询 - 介绍
08Lucene索引库查询 - 介绍
58 0
|
索引
07Lucene索引库的修改
07Lucene索引库的修改
36 0
|
存储 分布式计算 大数据
SPARK Parquet嵌套类型的向量化支持以及列索引(column index)
SPARK Parquet嵌套类型的向量化支持以及列索引(column index)
536 0
SPARK Parquet嵌套类型的向量化支持以及列索引(column index)
|
Apache 数据格式 算法
|
缓存 Java
Elasticsearch Query DSL之Compound queries(复合查询)
Elasticsearch Query DSL之Compound queries(复合查询)
Elasticsearch Query DSL之Compound queries(复合查询)
|
SQL 机器学习/深度学习 自然语言处理
全面解剖 Solr query 到lucene query
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。围绕从顶之下,从粗到西的关系认识solr 查询流程和实现细节。最低下定位到queryparse的实现。整个过程围绕信息检索这一思路展开,而不是工程实现来看这个问题。目的从整体结构上认识查询这一块的抽象。这样有具体需求的时候,可以知晓参照按个query、从哪个点注入系统中比较省事,而无需侵入solr、lucene底层。
273 0
全面解剖 Solr query 到lucene query
|
自然语言处理
Lucene QueryParser的一个"解析异常"
假期重新梳理了下之前在新浪博客的历史文档(新浪博客已下线),将一些内容重新搬到这里。 本文Lucene QueryParser的一个解析异常分析。
116 0