`

九、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]");

 

 

分享到:
评论

相关推荐

    Lucene简单应用

    #### 九、项目实践:构建一个简单的WEB搜索程序 - 结合前面所学的知识点,本部分将指导如何利用Lucene构建一个完整的Web搜索应用。 - 包括前端界面的设计、后端服务的搭建、索引的创建与维护、查询接口的实现等各个...

    Lucene开发指南

    查询解析器(QueryParser)将用户输入转换为内部查询对象,然后搜索器(Searcher)使用这些查询对象在索引中查找匹配文档。笔记中可能会介绍各种查询类型,如TermQuery、WildcardQuery和PhraseQuery,并讲解评分机制...

    lucene原理与代码分析完整版

    #### 九、Lucene的事务性和实时索引构建 Lucene虽然主要用于离线索引构建,但也支持一定程度上的事务性操作和实时索引更新。这对于需要频繁更新索引的应用场景非常重要。 #### 十、其他相关问题 除了以上核心知识...

    lucene基础资料

    2. **搜索过程**:搜索时,首先使用QueryParser解析用户输入的查询字符串,生成Query对象;接着,使用索引来查找匹配的文档;最后,使用ScoreDoc进行排序,并返回结果。 ### 二、Analyzer的使用 Analyzer是Lucene...

    lucene高级搜索进阶项目_02

    通过自定义QueryParser或使用Analyzer,我们可以控制查询的解析方式,以满足特定的搜索需求。 二、复杂查询类型 除了基本的单词查询,Lucene还支持更复杂的查询类型,如PrefixQuery(前缀查询)、WildcardQuery...

    Lucene_3.0_原理与代码分析

    #### 九、Lucene 的查询对象 在 Lucene 中,查询对象用于表示用户查询的具体形式。Lucene 提供了多种查询对象,如 `TermQuery`、`BooleanQuery`、`PhraseQuery` 等,它们分别对应于不同类型的查询。 #### 十、...

    Lucene+3.0+原理与代码分析完整版

    #### 九、Lucene 查询对象 **查询对象**是 Lucene 中用于表示查询逻辑的数据结构,常见的查询对象包括: 1. **TermQuery**:用于匹配特定词条的查询。 2. **BooleanQuery**:支持布尔逻辑运算的查询。 3. **...

    lucene相关jar+查询分析器jar

    之后,可以创建一个索引Reader来读取索引,并利用QueryParser创建查询对象。最后,使用Searcher执行查询并获取结果。 5. **查询语法**:Lucene支持布尔运算符(AND, OR, NOT)、短语查询、前缀查询、范围查询等多种...

    基于LUCENE的搜索引擎的设计与实现源代码

    - **查询处理**:创建QueryParser,解析用户输入的查询,生成Query对象。 - **执行搜索**:使用IndexSearcher执行Query,获取ScoreDoc数组,表示匹配的文档及其相关性。 - **结果展示**:遍历ScoreDoc,获取匹配...

Global site tag (gtag.js) - Google Analytics