博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QueryParser
阅读量:5949 次
发布时间:2019-06-19

本文共 2723 字,大约阅读时间需要 9 分钟。

【概述】

其他工具类使用比较方便,但不够灵活.QueryParser也实现了较多的匹配方式。

 

【QueryParser的应用】

1     /** 2      * 使用QueryParser进行查询 3      * @throws ParseException 4      */ 5     @Test 6     public void testQueryParser() throws ParseException{ 7         //4、创建Query 8         //参数1:版本 9         //参数2:默认搜索域(默认的搜索属性)10         //参数3:分词器11         QueryParser parser = new QueryParser(version,"content",new StandardAnalyzer(version));12         13         //获取Query对象14         //parse() 解析查询条件15         //1、精确匹配16         //在content中查询关键字为dual的条目17         Query query = parser.parse("dual");18 19         //查询到3条20         query = parser.parse("my");21         query = parser.parse("My");22         23         //2、分词匹配24         //parser通过空格对关键字进行分隔25         //空格相当于or26         //搜索到3条(wore || my)27         query = parser.parse("wore my");28         //搜多到1条(wore || mother)29         query = parser.parse("wore mother");30         31         //默认连接符可以通过setDefaultOperator()进行修改32         //parser.setDefaultOperator(Operator.AND);33         //搜索到1条(wore && my)34         query = parser.parse("wore my");35         query = parser.parse("my wore");36 37         //3、修改属性域38         //"属性域名称:值"39         query = parser.parse("author:Lucy");40         41         //4、通配符匹配42         //通配符在后43         query = parser.parse("author:L*");44         query = parser.parse("author:L???");45         46         //出现错误47         parser.setAllowLeadingWildcard(true);48         //因为Lucene认为通配符在前的查询方式效率较低。所以不建议使用49         query = parser.parse("author:*k");50         51         //5、区间查询52         //TO必须全部大写53         //开区间:不包含两个端点的值。如:(2,5)    2 < x < 5        54         //闭区间:包含两个端点的值。如:[2,5] 2<=x<=555         //闭区间查询56         query = parser.parse("id:[1 TO 3]");57         //开区间(只查询到2)58         query = parser.parse("id:{1 TO 3}");59         query = parser.parse("author:[M TO Z]");60         //区间无法对数值类型进行查询61         query = parser.parse("size:[1 TO 1000]");62         //提示:无法使用半开闭区间63         //query = parser.parse("id:{1 TO 3]");64         65         //6、多条件查询66         //-:必须不包含(排除);+:必须包含67         //查询author不包含Mike 或content中包含my的所有条目68         query = parser.parse("- author:Mike + content:my");69         70         //7、and连接符71         query = parser.parse("\"my and mother\"");72         73         //8、短语查询74         //查询一个整句75         query = parser.parse("\"my mother is health\"");76         77         //9、距离查询78         //~2表示词语之间包含两个词语79         query= parser.parse("\"my health\"~2");80         81         //10、模糊匹配82         query = parser.parse("configer~");83         84         util.searchByQueryParser(path, 10, query);85         System.out.println("QueryParser查询结束");86     }

 

转载于:https://www.cnblogs.com/zhzcode/p/9832074.html

你可能感兴趣的文章
JQ 循环切换DIV
查看>>
Android Fragment实践(二)
查看>>
centos 修改主机名立即生效和重启后也生效的方法
查看>>
Windows 64 位 mysql 5.7以上版本包解压安装
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
TClientDataSet[14]: 测试 FindFirst、FindNext、FindLast、FindPrior、Found
查看>>
CentOS 6.3中配置bond多网卡负载均衡
查看>>
clamav 完整查杀 linux 病毒实战
查看>>
我的友情链接
查看>>
EIGRP的Metric计算以及负载均衡
查看>>
org-capture 配置
查看>>
linux下lvs搭建负载均衡集群
查看>>
JMS 实例讲解
查看>>
求教:如何成为一个优秀的项目经理人
查看>>
shell 脚本--备份、还原mysql数据库
查看>>
JS脚本静态变量调用方法
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
正则表达式验证身份证格式是否正确
查看>>
Firebird(全功能的,免维护的数据库,能够管理多个独立的数据库) V2.1.3 英文特别版...
查看>>