QueryParser
【概述】
其他工具类使用比较方便,但不够灵活.QueryParser也实现了较多的匹配方式。
【QueryParser的应用】
/**
* 使用QueryParser进行查询
* @throws ParseException
*/
@Test
public void testQueryParser() throws ParseException{
//4、创建Query
//参数1:版本
//参数2:默认搜索域(默认的搜索属性)
//参数3:分词器
QueryParser parser = new QueryParser(version,"content",new StandardAnalyzer(version)); //获取Query对象
//parse() 解析查询条件
//1、精确匹配
//在content中查询关键字为dual的条目
Query query = parser.parse("dual"); //查询到3条
query = parser.parse("my");
query = parser.parse("My"); //2、分词匹配
//parser通过空格对关键字进行分隔
//空格相当于or
//搜索到3条(wore || my)
query = parser.parse("wore my");
//搜多到1条(wore || mother)
query = parser.parse("wore mother"); //默认连接符可以通过setDefaultOperator()进行修改
//parser.setDefaultOperator(Operator.AND);
//搜索到1条(wore && my)
query = parser.parse("wore my");
query = parser.parse("my wore"); //3、修改属性域
//"属性域名称:值"
query = parser.parse("author:Lucy"); //4、通配符匹配
//通配符在后
query = parser.parse("author:L*");
query = parser.parse("author:L???"); //出现错误
parser.setAllowLeadingWildcard(true);
//因为Lucene认为通配符在前的查询方式效率较低。所以不建议使用
query = parser.parse("author:*k"); //5、区间查询
//TO必须全部大写
//开区间:不包含两个端点的值。如:(2,5) 2 < x < 5
//闭区间:包含两个端点的值。如:[2,5] 2<=x<=5
//闭区间查询
query = parser.parse("id:[1 TO 3]");
//开区间(只查询到2)
query = parser.parse("id:{1 TO 3}");
query = parser.parse("author:[M TO Z]");
//区间无法对数值类型进行查询
query = parser.parse("size:[1 TO 1000]");
//提示:无法使用半开闭区间
//query = parser.parse("id:{1 TO 3]"); //6、多条件查询
//-:必须不包含(排除);+:必须包含
//查询author不包含Mike 或content中包含my的所有条目
query = parser.parse("- author:Mike + content:my"); //7、and连接符
query = parser.parse("\"my and mother\""); //8、短语查询
//查询一个整句
query = parser.parse("\"my mother is health\""); //9、距离查询
//~2表示词语之间包含两个词语
query= parser.parse("\"my health\"~2"); //10、模糊匹配
query = parser.parse("configer~"); util.searchByQueryParser(path, 10, query);
System.out.println("QueryParser查询结束");
}
QueryParser的更多相关文章
- lucene.net 使用过程中的 几个注意事项(含termquery 和QueryParser 的区别)
几个注意事项1.建立索引时 插入的顺序(不设置document和字段的boost) 会影响到 查询结果的默认排序,建议:将最新生成的文章 最后建索引 这样 查询结果首先显示的是 最后插入的数据2.Bo ...
- Lucene:QueryParser
作为lucene的Query工具,QueryParser却是最重要的一个.简单的说,QueryParser能够根据用户的输入来进行解析,自动构建合适的Query对象.下面简单总结一下它的实现: 目录 ...
- Lucene自定义扩展QueryParser
Lucene版本:4.10.2 在使用lucene的时候,不可避免的需要扩展lucene的相关功能来实现业务的需要,比如搜索时,需要在满足一个特定范围内的document进行搜索,如年龄在20和30岁 ...
- Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser
一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...
- 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象
一.概述 1.对于一个搜索而言,其核心语句为: searcher.search(query, 10); 此时,其最重要的参数为一个Qeury对象.构造一个Query对象有2种方法: (1)使用Quer ...
- rm -vf `ls |egrep -v "info_20130826-180233.31764|QueryParser.INFO"`
> rm -vf `ls |egrep -v "info_20130826-180233.31764|QueryParser.INFO"`
- org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, column 0.
如果出现了下列错误,那是因为用错了函数.把queryParser.Query改称queryParser.parse就通过了 org.apache.lucene.queryParser.ParseExc ...
- 【Lucene4.8教程之六】QueryParser与Query子类:怎样生成Query对象
版权声明:本文为博主原创文章.转载请注明来自http://blog.csdn.net/jediael_lu/ https://blog.csdn.net/jediael_lu/article/deta ...
- lucene查询索引之QueryParser解析查询——(八)
0.语法介绍:
- Lucene的查询语法,JavaCC及QueryParser(1)
http://www.cnblogs.com/forfuture1978/archive/2010/05/08/1730200.html 一.Lucene的查询语法 Lucene所支持的查询语法可见h ...
随机推荐
- 题解报告:hdu 1230 火星A+B(字符串)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1230 Problem Description 读入两个不超过25位的火星正整数A和B,计算A+B.需要 ...
- Service官方教程(3)Bound Services
Bound Services 1.In this document The Basics Creating a Bound Service Extending the Binder class Usi ...
- 414 Third Maximum Number 第三大的数
给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n).示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: ...
- snort + barnyard2如何正确读取snort.unified2格式的数据集并且入库MySQL(图文详解)
不多说,直接上干货! 为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物 ...
- MVC C# 直接导出txt文件
用asp.net根据数据内容自动生成一个txt文本文件并提供用户下载,此方法文件不保存在服务器上,直接提供给用户下载,到网上搜了一下,都是用的Response.BinaryWrite(),用了几下,发 ...
- webform 基础一
WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件.让开发者认为自己是在操作一个windows界面.极大地提高了开发效率.区别于dreamweaver,可以用代码写,也可以把控件像w ...
- 网盘资源搜索的一些知识 C#
针对互联网盘上的资源进行搜索查找.写一个网盘资源搜索的要点主要有以下几点. 1.这个网盘资源搜索的原理就是利用互联网搜索引擎的site 命令. 其次就是针对网页链接进行提取以及处理. 首先就是编写一个 ...
- java debug源码完整版
第一步:现在myeclipse或者eclipse中下载jad插件,将class文件翻译成java文件 点击下载安装 第二步:创建一个java工程,导出成jar包.jdk自带的jar包不包含debug ...
- linux命令useradd添加用户
linux命令useradd添加用户详解 1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s ...
- 更改ligerui源码实现分页样式修改
修改后样式: 第一步:实现功能. 更改源码部分ligerui.all.js文件 读源代码,发现ligerui底部工具条是这样实现的(ps:注释部分为源码) _render: function () { ...