lucene_04_解析语法查询
解析语法查询就是调用方法查询的原始查询
例如:

查询所有的查询器的语法为:*:*,因为lucene查询是根据term来做的,既是:key:value类型。*:*表示所有域中的所有值。
api调用语法解析
pom.xml 必须引入(其余的参看lucene_02).
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>4.10.3</version>
</dependency>
//初始化org.apache.lucene.queryparser.classic.QueryParser;
//参数1:默认查询的域
//参数2:解析器
QueryParser queryParser = new QueryParser("fileName", new IKAnalyzer());
// Query query = queryParser.parse("*:*");
Query query = queryParser.parse("apache");
printResult(query);
区间查询
语法为: [0 TO 800}。TO左边为最小值,右边为最大值。“}”,“{”为不包含,“[”,“]”为包含。
组合语法应该为:“域:[0 TO 800}”
但是在lucene中不支持字符串的范围查询,所以只能使用 NumericRangeQuery.newLongRange。但在solr中就能使用字符串的语法查询。
组合条件查询
第一种写法:
1) +条件1+条件2: 两个条件之间是并且的关系and。
例如: +filename:apache +content:apaches
2) +条件1条件2: 必须满足第一个条件,应该满足第二个条件。
例如: +filename:apache content:apache.
3) 条件1条件2: 两个条件满足其一即可。
例如: filename:apache content:apacher
4)-条件1条件2: 必须不满足条件1,要满足条件2。
例如:-filename:apache content:apaches。
示例:
//初始化org.apache.lucene.queryparser.classic.QueryParser;
//参数1:默认查询的域
//参数2:解析器
QueryParser queryParser = new QueryParser("fileName", new IKAnalyzer());
// Query query = queryParser.parse("*:*");
// Query query = queryParser.parse("apache");
Query query = queryParser.parse("+fileName:java fileContent:coordination to your microservices");
printResult(query);
Occur.MUST 查询条件必须满足,相当于and (加号)。
Occur.SHOULD 查询条件可选,相当于or空(不用符号)。
Occur.MUST_NOT 查询条件不能满足,相当于not 非一(减号)。
第二种写法:
条件1 AND 条件2
条件1 OR 条件2
条件1NOT 条件2.
示例:
等同于第一种方法
@Test
public void testParseQuery() throws Exception {
//初始化org.apache.lucene.queryparser.classic.QueryParser;
//参数1:默认查询的域
//参数2:解析器
QueryParser queryParser = new QueryParser("fileName", new IKAnalyzer());
// Query query = queryParser.parse("*:*");
// Query query = queryParser.parse("apache");
Query query = queryParser.parse("fileName:java OR fileContent:coordination to your microservices");
printResult(query);
}
多默认域:了解。
Query query = queryParser.parse("fileName:java OR fileContent:coordination to your microservices");这种方式已经可以替代。
String[] fields = {"fileSize","fileContent"};
MultiFieldQueryParser multiFieldQueryParser = new MultiFieldQueryParser(fields,new IKAnalyzer());
Query query1 = multiFieldQueryParser.parse("java");
printResult(query1);
lucene_04_解析语法查询的更多相关文章
- [转载]ECMall模板解析语法与机制
ECMall模板解析语法与机制 2011-05-22 在ECMall模板中,用"{"开头,以"}"结尾就构成一个标签单元,"{"紧接着的单词 ...
- 函数parseQuery用于解析url查询参数
在百度上找的,以后忘了再看. 语法如下: var obj = parseQuery(query) query是被解析的查询参数,函数返回解析后的对象. 使用范例如下: var jerry = pars ...
- dinoql 使用graphql 语法查询javascript objects
dinoql 是一个不错的基于graphql 语法查询javascript objects 的工具包,包含以下特性 graphql 语法(很灵活) 安全的访问(当keys 不存在的时候,不会抛出运行时 ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- arTemplate解析语法
模板解析语法 defaults.parser = function (code, options) { // var match = code.match(/([\w\$]*)(\b.*)/); // ...
- 添加jQuery方法解析url查询部分
Web前端不同页面间传值可以使用 cookies.localStorage 和 sessionStorage 等本地存储. 但是,今天我们尝试使用 url 查询,假设我们要传递字符串 str 到 mo ...
- 黑马旅游网 解析url查询字符串
function getUrlParam(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)( ...
- 解析URL查询字符串参数为对象以及老浏览器的getElementsByClassName
高程3使用拼接字符串形式解析的查询字符串,网上有各种正则方式解析的,记得太多,临时需要写的时候,自己都搞混乱了.只记一种吧,用正则. function getQueryStringArgs() { v ...
- IdentityServer4源码解析_5_查询用户信息接口
协议简析 UserInfo接口是OAuth2.0中规定的需要认证访问的接口,可以返回认证用户的声明信息.请求UserInfo接口需要使用通行令牌.响应报文通常是json数据格式,包含了一组claim键 ...
随机推荐
- Delphi7中单元文件内各个部分的执行顺序
注:本文主要是讨论delphi程序启动时和退出时的执行顺序,期间有些知识来源于Delphi帮助,有些来自<Delphi7程序设计教程>(这本书只告诉我有initialization 和 f ...
- luogu1417 烹调方案
题目大意 一共有$n$件食材,每件食材有三个属性,$a_i$,$b_i$和$c_i$,如果在$t$时刻完成第$i$样食材则得到$a_i-t*b_i$的美味指数,用第$i$件食材做饭要花去$c_i$的时 ...
- luogu1220 关路灯
题目大意 路面上有一些开着的灯,每个灯有功率和它的位置,人在第c个灯处,行走速度1m/s.问怎样关灯能使耗能最小,输出这个耗能. 思路 #include <cstdio> #include ...
- java 分布式锁
转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CA ...
- 最短路( spfa)
最短路 http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2622 #include <std ...
- pinpoint 磁盘不足的坑
观察 pinpoint hbase 数据存储目录default中各个表的大小 TraceV2 15G ApplicationTraceIndex 15G major_compact的操作目的 合并文件 ...
- ThinkPHP5中的助手函数
load_trait:快速导入Traits,PHP5.5以上无需调用 /** * 快速导入Traits PHP5.5以上无需调用 * @param string $class trait库 * ...
- 在命令提示符窗口下(cmd)使用指令操作并编译java代码,运行java编译代码
使用cmd操作java代码,编译.java文件,运行.class文件. 操作步骤: 1:创建一个文件夹: 例如:在e盘根目录(\)下面创建一个名为Hello的文件夹: 使用md指令:如图 在e盘中会生 ...
- Deutsch lernen (04)
1. streng a. 严厉的,严格的 streng gegen sich selbst und gegen andere sein streng auf Ordnung halten 2. ver ...
- dubbo之线程模型
事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度. 但如果事件处理逻辑较慢,或者需要发起新的IO请求 ...