九、Queryparser

Mike   

默认域包含mike


Mike  john
Mike  OR  john   

默认域包含mike或者john


+mike +address:zhaotong
Mike  AND address:zhaotong   

默认域即使mike并且address是zhaotong


id :2   

Id域为2


Address:Kunming –desc:she
Address:Kunming AND NOT desc:she   

Address是kunming并且desc不是she


(mike OR john) AND address:zhaotong   

默认域是mike或者john 并且address是zhaotong


Desc: “she like”   

Desc域是she like


desc:”happy girl”~5   

查找happy和girl之间距离小于5的文档


J*   

默认域是j开头


Johe~   

模糊搜索johe


Id:[“1” TO “3”]   

Id从1到3

            //1、创建QueryParser对象,默认搜索域为content
        QueryParser parser = new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35));


        //改变空格的默认操作符,以下可以改成AND
        //parser.setDefaultOperator(Operator.AND);


        //开启第一个字符的通配符匹配,默认关闭因为效率不高
        parser.setAllowLeadingWildcard(true);


        //搜索content中包含有like的
        Query query = parser.parse("like");
       
        //有basketball或者football的,空格默认就是OR
        query = parser.parse("basketball football");
       
        //改变搜索域为name为mike
        //query = parser.parse("content:like");
       
        //同样可以使用*和?来进行通配符匹配
        query = parser.parse("name:j*");
       
        //通配符默认不能放在首位
        query = parser.parse("email:*@itat.org");
       
        //匹配name中没有mike但是content中必须有football的,+和-要放置到域说明前面
        query = parser.parse("- name:mike + like");
       
        //匹配一个区间,注意:TO必须是大写
        query = parser.parse("id:[1 TO 6]");
       
        //闭区间匹配只会匹配到2
        query = parser.parse("id:{1 TO 3}");
       
        //完全匹配I Like Football的
        query = parser.parse("\"I like football\"");
       
        //匹配I 和football之间有一个单词距离的
        query = parser.parse("\"I football\"~1");
       
        //模糊查询
        query = parser.parse("name:make~");
       
        //没有办法匹配数字范围(自己扩展Parser)
        query = parser.parse("attach:[2 TO 10]");

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值