`

lucene3.6.0的查询条件分析

 
阅读更多

 

// TermQuery:词条查询。通过对某个词条的指定,实现检索索引中存在该词条的所有文档。  

  Query query = new TermQuery(New Term("content","java")),区分大小写  

            // TermRangeQuery:范围查询。这种范围可以是日期,时间,数字,大小等等。可以使用"context:[a to b]"(包含边界)或者"content:{a to b}"(不包含边界) 查询表达式  

 

            // PrefixQuery:前缀查询。  可以使用"content:lua*"表达式

            // BooleanQuery:布尔查询。Lucene中包含逻辑关系:“与”,“或”,“非”的复杂查询,最终都会表示成BooleanQuery。布尔查询就是一个由多个子句和子句之间组成的布尔逻辑所组成的查询。    可以通过BooleanQuery.java类的public void add(Query query, BooleanClause.Occur occur) 方法来增加一个查询子句。子句最大数量默认为1024。

查询表达式可以通过“+”,“-”,“AND”,“OR”,“NOT”来组合。比如“+content:"abc" -title:"xyz"”

        // PhraseQuery:短语查询。默认为完全匹配,但可以指定坡度(Slop,默认为0)改变范围。比如Slop=1,检索短语为“电台”,那么在“电台”中间有一个字的也可以被查找出来,比如“电视台”。  查询表达式可以为“电 台 ~1”

            // MultiPhraseQuery:多短语查询。  

            // FuzzyQuery:类似项查询,模糊查询。模糊查询使用的匹配算法是levensh-itein算法。此算法在比较两个字符串时,将动作分为3种:加一个字母(Insert),删一个字母(Delete),改变一个字母(Substitute)。  编辑距离能够影响结果的得分,编辑距离越小得分越高.查询表达式为"fuzzy~",使用~来表示模糊查询.

            // WildcardQuery:通配符查询。“*”号表示0到多个字符,“?”表示单个字符。 最好不要用通配符为首,否则会遍历所有索引项 

            // SpanQuery:跨度查询。此类为抽象类。  

            // SpanTermQuery:检索效果完全同TermQuery,但内部会记录一些位置信息,供SpanQuery的其它API使用,是其它属于SpanQuery的Query的基础。  

            // SpanFirstQuery:查找方式为从Field的内容起始位置开始,在一个固定的宽度内查找所指定的词条。  

            // SpanNearQuery:功能类似PharaseQuery。SpanNearQuery查找所匹配的不一定是短语,还有可能是另一个SpanQuery的查询结果作为整体考虑,进行嵌套查询。  

            // SpanOrQuery:把所有SpanQuery查询结果综合起来,作为检索结果。  

            // SpanNotQuery:从第一个SpanQuery查询结果中,去掉第二个SpanQuery查询结果,作为检索结果。 

 

Query的toString()方法可以查看最终的查询表达式:

 QueryParser parser = new QueryParser(Version.LUCENE_CURRENT,"context", new StandardAnalyzer(Version.LUCENE_CURRENT););

            Query query = parser.parse("旧水泥袋");

输出:

context:旧 context:水 context:泥 context:袋

 

不能只有NOT表达式,必须跟AND,OR等其他表达式一起使用.

 

        //QueryParser parser = new QueryParser(version, "content", analyzer);//默认在content域中查找  

        QueryParser parser = new MyQueryParser(version, "content", analyzer);//默认在content域中查找, 重写了getRangeQuery方法, 可以进行数字范围查询  

        Query query = null;   

 

        //查找content(默认域)中存在软件的结果  

        query = parser.parse("软件");  

 

        //查找name域中有java的结果  

        query = parser.parse("name:java");  

 

        //使用通配符  

        query = parser.parse("name: j*");//默认*号不能出现在最前端, 会影响效率, 使用parser.setAllowLeadingWildcard(true)打开  

        query = parser.parse("lu*n?");//只能在单个分词中使用通配符, 即 使用 “lucene*action”就匹配不到  

        query = parser.parse("lucene test");//默认lucene和action是或关系  

        query = parser.parse("lucene OR test");//同上, OR必须大写  

        query = parser.parse("lucene AND test");//与关系  

        query = parser.parse("- lucene + test");//存在test但不存在lucene  

        //query = parser.parse("size:[100 TO 200]");//这个query是TermRangeQuery所以不能用于数字(日期)范围查询  

        query = parser.parse("name:[java TO java]");//查找有a-z字母的    {}不包含  

        //数字范围查询需要重写QueryParser的getRangeQuery方法  

        query = parser.parse("date:[1334550379955 TO 1334550379955]");  

        query = parser.parse("\"lucene action\"~1");//1即phraseQuery中的slop=1  

        query = parser.parse("name:xava~0.74");//加上~代表模糊查询, 要和上面的额短语查询相区别开来,另外~后面可以加一个浮点数去顶相似度  

        //查询大小在145到150, 名称与javv相似, 创建时间在1334550379955之前的 不要, lucene与action相距1  

        query = parser.parse("size:[145 TO 150] + name:javv~ - date:[1 TO 1334550379954] + \"lucene action\"~1");  

 

 

对查询项进行加权:可以通过在查询项加上^factor对某个查询项进行加权,比如"title^2.0 junit" 对title的查询加权为2.0,而junit还是默认1.0

分享到:
评论

相关推荐

    lucene-3.6.0

    Lucene 3.6.0包含了多个预定义的分析器,如StandardAnalyzer、SimpleAnalyzer等,同时支持自定义分析器,以适应不同语言和领域的文本处理需求。 4. **存储与检索**:Lucene支持多种存储方式,包括内存存储和磁盘...

    lucene-3.6.0.zip

    4. 多语言支持:3.6.0版本提供了更多的语言分析器,支持不同语言的文本处理,如中文、法文、德文等。 5. 高级搜索功能:引入了对地理位置搜索的支持,通过地理坐标实现附近的搜索。 6. 更新管理:优化了索引更新...

    lucene 3.6.0 源代码

    lucene-core-3.6.0-sources 绝对可用

    lucene-3.6.0 api 手册

    lucene-3.6.0 api 手册, 最新的 , lucene 是个好东东, 一直在用, 之前还在使用3.1的,发现已经到3.6了, 落后啊

    lucene-core-3.6.0.jar

    lucene-core-3.6.0.jar,很好,很实用的一个包

    IK和Lucene

    描述中提到"IKAnalyzer2012兼容lucene3.6.0,IKAnalyzer兼容lucene有限",这意味着IK Analyzer 2012版本是专门为配合Lucene 3.6.0设计的,它们之间的兼容性较好。而其他版本的IK Analyzer可能只支持部分版本的Lucene...

    lucene-core-3.6.0.jar.zip

    Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...

    lucene.jar包,四包(全)

    2. **查询解析**:Lucene提供了QueryParser类,可以将用户输入的查询字符串转换为内部查询对象,支持布尔运算、短语匹配等多种查询类型。 3. **搜索执行**:通过使用IndexSearcher,开发者可以对构建好的索引进行...

    lucene jar包

    3.6.0可能包含了对分析器的改进,支持更多种语言的文本处理,以及对复杂查询结构的支持。此外,这个版本也可能引入了对倒排索引的进一步优化,提高了搜索速度。这个版本更适合那些需要处理大量数据和复杂查询的项目...

    lucene-highlighter-3.6.0-sources

    lucene-highlighter-3.6.0-sources

    lucene5.X与lucene3.60的版本差异

    《Lucene 5.x与3.6.0版本差异详解》 Lucene作为一个强大的全文搜索引擎库,其每个版本的更新都带来了一系列的变化和优化。本文将深入探讨Lucene 5.x与Lucene 3.6.0之间的主要差异,帮助开发者理解新版本的功能改进...

    mmseg4j-1.8.5

    详细说明:mmseg 1.8.5的测试分词项目包 和lucene 3.6.0 相配合使用-corresponding test points words mmseg project package and lucene 3.6.0

    lucene全文检索实例二(实现对10万条数据检索文件的增删改查操作)

    2. `lucene-core-3.6.0.jar`:这是Lucene的核心库,包含了Lucene的主要功能,如索引构建、查询解析和结果排名等。 3. `javassist-3.4.GA.jar`:这是一个动态类库,用于在运行时修改Java类和处理字节码,可能会在...

    IKAnalyzer2012_u6和lucene-core-3.6.0

    IKAnalyzer2012_u6和lucene-core-3.6.0两个jar包,互相兼容。ik分词的使用方法可以转https://blog.csdn.net/fr961951149/article/details/98736002。

    lucene4.0+ik

    2. **导入依赖**:在你的项目中,添加`lucene-core-3.6.0.jar`和`IKAnalyzer2012FF_u1.jar`两个库文件,它们分别提供了Lucene的核心功能和IKAnalyzer的分词服务。 3. **创建索引**:使用Lucene提供的API,编写代码...

    solr-3.6.0-src

    - **新的查询解析器和筛选器**:增加了新的查询解析器和筛选器,提供了更灵活的查询语法和过滤条件。 - **改进的 XML API**:对 XML API 进行了优化,使其更符合 RESTful 风格,便于集成和使用。 3. **源代码分析...

    lucene3.6.1 所需jar整合包

    lucene3.6.1 所需jar整合包里面包括 lucene-highlighter-3.6.1.jar lucene-core-3.6.0.jar lucene-analyzers-3.6.1.jar IKAnalyzer2012_u6.jar

    IKanalyzer2012修复与Lucene3.6.2Jar及IK使用示例

    标题中的“IKanalyzer2012修复与Lucene3.6.2Jar及IK使用示例”指的是一项关于优化IKAnalyzer2012版本的活动,这是一款流行的中文分词器,常用于Java环境下的信息检索和文本分析。Lucene3.6.2Jar则是Apache Lucene的...

    lucene-3.6.2.zip

    如果还是使用3.6.0或3.6.1,更要升级到该版本,因为该版本修复了部分以前版本的BUG。下面列出几个常用到的包:lucene-core-3.6.2.jar、lucene-memory-3.6.2.jar、lucene-highlighter-3.6.2.jar、lucene-analyzers-...

    lucene.rar

    总的来说,Lucene提供了一套完整的全文检索解决方案,从文本分析到索引构建,再到查询执行和结果返回,涵盖了全文检索的全过程。通过深入学习和掌握Lucene,开发者能够构建出高效、精准的搜索引擎应用,满足各种业务...

Global site tag (gtag.js) - Google Analytics