【概述】

其他工具类使用比较方便,但不够灵活.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. 【OCR技术系列一】光学字符识别技术介绍

    注:此篇内容主要是综合整理了光学字符识别 和OCR技术系列之一]字符识别技术总览,详情见文末参考文献 什么是 OCR? OCR(Optical Character Recognition,光学字符识别 ...

  2. Proactive Patching Overview

    1.Proactive Patching Overview Between Patch Set releases, Oracle's proactive patching program provid ...

  3. jmeter(二)元件的作用域与执行顺序

    1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...

  4. 窗体WINFORM

    窗体的事件:删除事件:先将事件页面里面的挂好的事件删除,再删后台代码里面的事件 Panel是一个容器 1.Label -- 文本显示工具Text:显示的文字取值.赋值:lable1.Text 2.Te ...

  5. js插件定义事件中,this引用的实现模拟

    在web项目中,经常会使用jquery和mui等js框架,之前只是按照API说明去按规则使用,比如在jq和mui中,事件处理函数中可以直接用this访问事件源,如下面的代码: <!DOCTYPE ...

  6. iOS中的蓝牙

    iOS中的蓝牙 概述 iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),从iOS7开 ...

  7. iOS之NSAttributedString-------字符属性

    NSAttributedString 字符属性 字符属性可以应用于 attributed string 的文本中. NSString *const NSFontAttributeName;(字体) N ...

  8. v使用索引的注意事项及常见场景、案例

    索引的原理与作用,各种书籍和网络上的介绍可以说是铺天盖地,基本上主流数据库系统的也都是一致的.选择索引字段的原则,比如外键字段.数据类型较小的字段.经常用于查询或排序的字段.表关联的字段等等,在此不做 ...

  9. ar - 建立, 修改档案或从档案中抽取成员.

    总览 ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files... 描述 GNU 组织的ar 程序 用于建立, 修改档案 ...

  10. TYPE=MyISAM 与 ENGINE=MyISAM 的区别(摘要版)

    TYPE=MyISAM 和 ENGINE=MyISAM 都是设置数据库存储引擎的语句 (老版本的MySQL使用TYPE而不是ENGINE(例如,TYPE = MYISAM). MySQL 5.1为向下 ...