【概述】

其他工具类使用比较方便,但不够灵活.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. 使用jquery进行跨域操作

    ajax默认是不支持跨域操作的,只能提交跨域请求,无法获得响应.而可以用$.getScript()函数来进行跨域操作.代码如下: <button id="btnTest"&g ...

  2. flask框架模板系统

    flask模板引擎 flask默认使用了Jinja2模板引擎,我们在使用模板的时候,需要在同级目录文件夹下 创建一个templates的文件夹,然后这个文件夹内放置我们想要的模板实例即可: 在正常普通 ...

  3. [GZOI2016] 亚索的量子实验【分块】

    第二题 亚索的粒子实验 [问题描述] 亚索是一名伟大的科学家,他最近在做一个粒子的实验,粒子初始有一定的能量,实验过程中倘若第i个粒子被注入k能量,那该粒子就会增加k能量,同时由于辐射作用,第2i,3 ...

  4. 员工管理系统(集合与IO流的结合使用 beta1.0 ArrayList<Employee>)

    package cn.employee; public class Employee { private int empNo; private String name; private String ...

  5. 算法和数据结构~Sqlserver索引使用的B树

    B树相关概念 在B-树中查找给定关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,…,Kn查找给定的关键字(可用顺序查找或二分查找法),若找到等于给定值的关键字,则查找成功:否则,一定可以 ...

  6. 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法

    利用Laravel 搭建oauth2 API接口 要求 laravel 5.4以上 安装 $ composer require laravel/passport 在配置文件 config/app.ph ...

  7. c#拖拽文件

    在“属性”窗口中,先设置MDI的父窗口的AllowDrop 属性更改为true;2.在父窗口的事件中添加下面两个事件 private void Form1_DragEnter(object sende ...

  8. 学习笔记 第七章 使用CSS美化超链接

    第7章  使用CSS美化超链接 学习重点 认识超链接 熟悉伪类 定义超链接样式 能够灵活设计符合页面风格的链接样式 7.1  定义超链接 在HTML5中建立超链接需要两个要素:设置为超链接的网页元素和 ...

  9. Android Studio中找出不再使用的资源

    顶部Analyze菜单中选择Run Inspection by Name 在弹出的输入框中输入unused resources

  10. SQLServer性能优化专题

    SQLServer性能优化专题 01.SQLServer性能优化之----强大的文件组----分盘存储(水平分库) http://www.cnblogs.com/dunitian/p/5276431. ...