解析语法查询就是调用方法查询的原始查询

例如:

查询所有的查询器的语法为:*:*,因为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_解析语法查询的更多相关文章

  1. [转载]ECMall模板解析语法与机制

    ECMall模板解析语法与机制 2011-05-22 在ECMall模板中,用"{"开头,以"}"结尾就构成一个标签单元,"{"紧接着的单词 ...

  2. 函数parseQuery用于解析url查询参数

    在百度上找的,以后忘了再看. 语法如下: var obj = parseQuery(query) query是被解析的查询参数,函数返回解析后的对象. 使用范例如下: var jerry = pars ...

  3. dinoql 使用graphql 语法查询javascript objects

    dinoql 是一个不错的基于graphql 语法查询javascript objects 的工具包,包含以下特性 graphql 语法(很灵活) 安全的访问(当keys 不存在的时候,不会抛出运行时 ...

  4. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  5. arTemplate解析语法

    模板解析语法 defaults.parser = function (code, options) { // var match = code.match(/([\w\$]*)(\b.*)/); // ...

  6. 添加jQuery方法解析url查询部分

    Web前端不同页面间传值可以使用 cookies.localStorage 和 sessionStorage 等本地存储. 但是,今天我们尝试使用 url 查询,假设我们要传递字符串 str 到 mo ...

  7. 黑马旅游网 解析url查询字符串

    function getUrlParam(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)( ...

  8. 解析URL查询字符串参数为对象以及老浏览器的getElementsByClassName

    高程3使用拼接字符串形式解析的查询字符串,网上有各种正则方式解析的,记得太多,临时需要写的时候,自己都搞混乱了.只记一种吧,用正则. function getQueryStringArgs() { v ...

  9. IdentityServer4源码解析_5_查询用户信息接口

    协议简析 UserInfo接口是OAuth2.0中规定的需要认证访问的接口,可以返回认证用户的声明信息.请求UserInfo接口需要使用通行令牌.响应报文通常是json数据格式,包含了一组claim键 ...

随机推荐

  1. 一句话实现Mysql查询结果带行号

    SELECT @rowno:=@rowno + 1 AS rowno,a.* FROM tableName a,(SELECT @rowno:=0) b

  2. Codeforces 2018-2019 ICPC, NEERC, Southern Subregional Contest

    2018-2019 ICPC, NEERC, Southern Subregional Contest 闲谈: 被操哥和男神带飞的一场ACM,第一把做了这么多题,荣幸成为7题队,虽然比赛的时候频频出锅 ...

  3. POJ 2728(最优比率生成树+01规划)

                                                                                                    Dese ...

  4. nyoj--1100--WAJUEJI which home strong!(bfs)

    WAJUEJI which home strong! 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是什么 ...

  5. SPOJ GSS 系列

    来怒做GSS系列了: GSS1:https://www.luogu.org/problemnew/show/SP1043 这题就是维护一个 sum , mx , lmx , rmx,转移时用结构体就好 ...

  6. IJ:ALI OSS 配置

    ylbtech-IJ:ALI OSS 配置 1. src/resources/返回顶部 1.src/resources/ 1.1.aliyunoss.properties # oss\u7684\u5 ...

  7. nodejs windows环境安装

    相信对于很多关注javascript发展的同学来说,nodejs已经不是一个陌生的词眼.有关nodejs的相关资料网上已经铺天盖地.由于它的高并发特性,造就了其特殊的应用地位. 国内目前关注最高,维护 ...

  8. NOIP 2015 DAY2

    跳石头 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块 ...

  9. Python 37 进程池与线程池 、 协程

    一:进程池与线程池 提交任务的两种方式: 1.同步调用:提交完一个任务之后,就在原地等待,等任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行 2.异步调用:提交完一个任务之后, ...

  10. Python 30 单例模式

    单例模式 多次实例化的结果指向同一个实例 单例模式实现方式 import settings #方式一: class MySQL: __instance=None def __init__(self,i ...