【概述】

其他工具类使用比较方便,但不够灵活.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. the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf

    一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-htt ...

  2. 【css】rem及其替换方案

    移动端的web前端开发其实经常会有一些令人头疼的问题,比如屏幕适配.1像素问题等,rem也是之前在屏幕适配上比较完善的一套方案,但是随着业务的深入,任何方案都有其优秀与不足的地方,rem这套方案也一样 ...

  3. [HNOI2008]Card洗牌

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红 ...

  4. [Usaco2005 Nov]Asteroids

    Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape o ...

  5. Poj 3294 Life Forms (后缀数组 + 二分 + Hash)

    题目链接: Poj 3294 Life Forms 题目描述: 有n个文本串,问在一半以上的文本串出现过的最长连续子串? 解题思路: 可以把文本串用没有出现过的不同字符连起来,然后求新文本串的heig ...

  6. 二分查找+数学 HDOJ 4342 History repeat itself

    题目传送门 题意:计算从1开始到第n个非完全平方数的开方和 分析:设第n个非完全平方数的值为a,x * x < a < (x+1) * (x+1),而且易得(tmp = sqrt (a) ...

  7. 自动判断手机版和pc版

    <html><head><title>欢迎来到手机版</title><script>var ua = navigator.userAgent ...

  8. AJPFX区分this和super

    this和super的区别No.区别thissuper1操作属性this.属性:表示调用本类中的属性,如果本类中的属性不存在,则从父类查找super.属性:表示调用父类中的属性2操作方法this.方法 ...

  9. (1) Jenkins + Subversion + Maven + TestNG - 软件

    软件需求 1 Jenkins http://jenkins-ci.org/ 2 Visual SVN Server https://www.visualsvn.com/server/ 3 Tortoi ...

  10. System.Lazy<T>延迟加载

    在很多情况下,有些对象需要在使用时加载或根据逻辑动态加载.有些情况如果不延迟加载,可能会影响效率甚至抛出Timeout Exception.如网络操作.数据库操作.文件IO操作 直接上代码,方便我们理 ...