`
lxwt909
  • 浏览: 570894 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lucene5学习之PrefixQuery使用

阅读更多

     继续学习Query系列的实现类,PrefixQuery即前缀查询,类似于数据库SQL里的like 'java%',查询以指定前缀字符串打头的索引文档。官方API是这样解释的:



 意思是这个Query是用包含指定前缀的Terms来匹配索引文档的,PrefixQuery是QueryParser根据用户的输入构建的。

     这个Query很简单,没什么多说的,直接上使用示例: 

String fieldName = "contents";
String queryString = "lucene";
		
Query query = new PrefixQuery(new Term(fieldName,queryString));

    注意,使用PrefixQuery时,你的输入不需要加*星号的,即queryString=lucene即可,而不用多此一举写成

   queryString=lucene*,但如果你是使用QueryParser来构建前缀查询,则需要添加星号的,如:

QueryParser parser = new QueryParser(fieldName, new AnsjAnalyzer());
Query query = parser.parse("lucene*");

    这个是容易犯错的地方,特此提醒。

    还有需要注意的是,你提供的查询参数queryString必须全部是小写的,不能包含大写形式,因为Lucene内部的Term都是经过小写处理过的,没有大写形式的,你如果这样写:

//参数定义
String directoryPath = "D:/lucenedir";
String fieldName = "contents";
String queryString = "Lucene"; //Lucene中L大写了,是搜不到结果的
		
Query query = new PrefixQuery(new Term(fieldName,queryString));

    而你如果使用QueryParser来构建前缀查询则不用担心这个大小写问题,因为QueryParser会经过分词器,分词器会进行大小写处理,前面的几篇博文也提到过。

    最后提醒一点就是前缀查询性能不太好,尽量提供的查询关键字长度大点,不要使用什么a*这种方式来查询,更不用说**这种方式了。注意了上面几点,PrefixQuery怎么使用就基本上掌握了。

    如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,

或者加裙
一起交流学习!

  • 大小: 155.6 KB
分享到:
评论
2 楼 majiedota 2015-07-08  
1 楼 oaibf 2015-05-27  
soga

相关推荐

    lucene3.6.1学习

    在 Lucene 中,查询是通过 `Query` 对象表示的,常见的查询类型有 TermQuery、BooleanQuery、PrefixQuery 等。查询对象可以使用 `Searcher` 进行执行,如 `IndexSearcher`,它会返回匹配文档的评分排序结果。测试...

    lucene3.5学习笔记

    `IndexWriter` 是 Lucene 中的核心类之一,用于创建或更新索引。它提供了添加文档、删除文档、优化索引等操作的功能。 **1.1.2 Directory** `Directory` 在 Lucene 中代表了存储索引的地方,可以是硬盘上的文件...

    lucene 2.0 api以及lucene 3.0 api

    通过 `API_lucene3.0.0.chm` 文件,开发者可以找到完整的 Lucene 3.0 API 文档,包括类、方法、接口的详细说明,以及示例代码,这对于理解和使用新版本的 Lucene 非常有帮助。 同样,`lucene-2.0.CHM` 文件则提供了...

    Lucene时间区间搜索

    Lucene支持多种查询类型,例如TermQuery、PrefixQuery、RangeQuery等。在时间区间搜索中,我们通常会用到RangeQuery。RangeQuery允许我们在指定的范围内查找匹配的文档,包括或者不包括边界。例如,我们可以创建一个...

    lucene学习笔记

    标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...

    lucene_3.6.1_API

    Lucene 3.6.1是其历史版本之一,虽然现在有更新的版本,但3.6.1仍具有重要的学习价值,尤其对于那些需要维护旧系统的开发者来说。本文将围绕Lucene 3.6.1的API进行详细解析,帮助读者深入理解其核心概念和功能。 ...

    lucene创建修改删除组合条件查询

    **组合条件查询**是Lucene查询的强大之处。你可以使用`BooleanQuery`来构造复杂的布尔逻辑,比如AND、OR、NOT操作。例如,可以创建两个`Query`对象,一个用于匹配关键词,另一个用于时间范围,然后通过`...

    Lucene 搜索方法(前缀搜索)

    在IT领域,Lucene是一个广泛使用的全文搜索引擎库,它提供了高效、可扩展的搜索功能。在本主题中,我们将深入探讨如何在Lucene中实现前缀搜索,这是一种允许用户通过输入一个词的前缀来查找匹配文档的强大工具。这...

    Lucene实现全文检索

    1. **索引(Indexing)**:Lucene的核心工作流程之一是创建索引。索引是一个结构化的数据存储,类似于图书馆的目录,能够快速定位到文档中的特定信息。通过分词(Tokenization)、词干提取(Stemming)和停用词过滤...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-08.Lucene搜索实战2 共5页.pptx

    通过这门课程,学习者将全面掌握Lucene的使用,能够构建和优化大规模文档的搜索系统,模拟类似百度的搜索引擎功能。同时,对搜索性能、用户体验和搜索结果的相关性等方面也有深入理解,从而在实际工作中更好地满足...

    lucene.zip

    《Lucene:中文全文搜索引擎库的入门指南》 Apache Lucene是一个开源的...深入学习Lucene,你可以构建出更强大、高效的搜索应用。记住,实践是检验理论的最好方式,动手操作并不断尝试,你将对Lucene有更深的理解。

    lucene4.0 demo

    首先,创建一个`IndexSearcher`对象,然后构造一个`Query`,如使用`TermQuery`、`BooleanQuery`或`PrefixQuery`等。调用`IndexSearcher`的`search()`方法执行查询,并获取结果集。 7. **评分与排序** Lucene使用TF...

    lucene例子

    3. **评分机制**:Lucene使用TF-IDF算法计算文档与查询的相关性,得分高的文档在搜索结果中排名更前。 4. **TopDocs**:Searcher的search()方法返回TopDocs对象,包含匹配的文档总数和最高得分的文档集合。 三、多...

    lucene API文档

    二、Lucene API 使用步骤 1. **创建索引**: 首先,你需要实例化一个Analyzer,然后使用IndexWriter创建索引。每个文档都由一个或多个Field对象组成,每个Field包含一个名字和一个值,通过Analyzer进行分析。 2. **...

    Lucene-core-2.0.0.jar

    《深入理解Lucene-core-2.0.0.jar:开启全文检索之旅》 在信息技术日新月异的今天,搜索引擎已经成为了我们获取信息的重要工具。而Lucene,作为开源Java库,是构建全文搜索引擎的核心框架,它为开发者提供了强大的...

    Lucene全文搜索 分组,精确查找,模糊查找

    在IT行业中,全文搜索引擎的使用越来越广泛,而Apache Lucene作为一款强大的开源全文检索库,深受开发者们的喜爱。它提供了高效的索引和查询功能,使得在海量数据中进行精准、快速的文本搜索成为可能。本文将围绕...

    C#+Lucene.Net开发完成的一个自定义WEB搜索引擎

    例如,使用PrefixQuery、WildcardQuery或FuzzyQuery等,可以匹配部分关键词或近似关键词。 **五、Lucene.Net的索引机制** Lucene.Net通过建立倒排索引来实现快速搜索。索引过程包括分析文本、创建Term(词项)、...

    【分享:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    9.6. 使用前缀搜索—PrefixQuery 19 9.7. 短语搜索—PhraseQuery 20 9.8. 多短语搜索—MultiPhraseQuery 20 9.9. 模糊搜索—FuzzyQuery 21 9.10. 通配符搜索—WildcardQuery 21 9.11. 跨度搜索 21 9.11.1. ...

Global site tag (gtag.js) - Google Analytics