【概述】

其他工具类使用比较方便,但不够灵活.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的更多相关文章

  1. lucene.net 使用过程中的 几个注意事项(含termquery 和QueryParser 的区别)

    几个注意事项1.建立索引时 插入的顺序(不设置document和字段的boost) 会影响到 查询结果的默认排序,建议:将最新生成的文章 最后建索引 这样 查询结果首先显示的是 最后插入的数据2.Bo ...

  2. Lucene:QueryParser

    作为lucene的Query工具,QueryParser却是最重要的一个.简单的说,QueryParser能够根据用户的输入来进行解析,自动构建合适的Query对象.下面简单总结一下它的实现: 目录 ...

  3. Lucene自定义扩展QueryParser

    Lucene版本:4.10.2 在使用lucene的时候,不可避免的需要扩展lucene的相关功能来实现业务的需要,比如搜索时,需要在满足一个特定范围内的document进行搜索,如年龄在20和30岁 ...

  4. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  5. 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象

    一.概述 1.对于一个搜索而言,其核心语句为: searcher.search(query, 10); 此时,其最重要的参数为一个Qeury对象.构造一个Query对象有2种方法: (1)使用Quer ...

  6. rm -vf `ls |egrep -v "info_20130826-180233.31764|QueryParser.INFO"`

    > rm -vf `ls |egrep -v "info_20130826-180233.31764|QueryParser.INFO"`

  7. org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, column 0.

    如果出现了下列错误,那是因为用错了函数.把queryParser.Query改称queryParser.parse就通过了 org.apache.lucene.queryParser.ParseExc ...

  8. 【Lucene4.8教程之六】QueryParser与Query子类:怎样生成Query对象

    版权声明:本文为博主原创文章.转载请注明来自http://blog.csdn.net/jediael_lu/ https://blog.csdn.net/jediael_lu/article/deta ...

  9. lucene查询索引之QueryParser解析查询——(八)

    0.语法介绍:

  10. Lucene的查询语法,JavaCC及QueryParser(1)

    http://www.cnblogs.com/forfuture1978/archive/2010/05/08/1730200.html 一.Lucene的查询语法 Lucene所支持的查询语法可见h ...

随机推荐

  1. [Usaco2005 Feb]Feed Accounting 饲料计算

    Description Farmer John is trying to figure out when his last shipment of feed arrived. Starting wit ...

  2. Xors on Segments Codeforces - 620F

    http://codeforces.com/problemset/problem/620/F 此题是莫队,但是不能用一般的莫队做,因为是最优化问题,没有办法在删除元素的时候维护答案. 这题的方法(好像 ...

  3. 使用 Suricata 进行入侵监控(一个简单小例子访问百度)

    前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 1.自己编写一条规则,规则书写参考snort规则(suricata ...

  4. [转]Asp.net Mvc2中重构View的三种方式

    本文转自:http://www.cnblogs.com/zhuqil/archive/2010/07/14/asp-net-mvc2-view-refactoring.html 我们在Asp.net ...

  5. Android开发学习——android与服务器端数据交互

    1.首先搭建服务器端. 使用MyEclipse开发工具 public class MyServlet extends HttpServlet { @Override protected void do ...

  6. Java实现求二叉树的路径和

    题: 解: 这道题考的是如何找出一个二叉树里所有的序列. 我的思路是先从根节点开始遍历,找出所有的子节点,因为每个子节点只有一个父节点,再根据每个子节点向上遍历找出所有的序列,再判断序列的总和. 这样 ...

  7. js拿到焦点所在的标签对象

    通过 document.activeElement 此时是js对象,如果要调用jQuery的API那么就转换成jquery对象 $(document.activeElement)

  8. 学JAVA第二十二天,StringBuffer的好处

    五一的假期今天就结束了,又要回来上课了. 今天就写一下StringBuffer的好处吧. StringBuffer类的对象能够被多次的修改,并且不产生新的未使用对象. 也就是说,我们平时用String ...

  9. 2017团体程序设计天梯赛大区赛 L3-3 球队“食物链”

    思路: 状压dp. 实现: #include <iostream> #include <cstdio> #include <cstring> using names ...

  10. http的请求与响应-----content-type

    content-type 指请求消息头的中请求消息数据的格式 有三种用法 第一种:设置在request header的参数中 js中可以在发送请求前在请求消息头中设置content-typevar x ...