`
qindongliang1922
  • 浏览: 2188656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117663
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126071
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60031
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71399
社区版块
存档分类
最新评论

Lucene4.3开发之第三步之温故知新(三)

阅读更多
前面几篇笔者已经把Lucene的最基本的入门,介绍完了,本篇就对Lucene基本的知识做一个总结,以便于加深对Lucene基本API组件的理解。

为了方便对比学习,下面给出表格数据

索引期间使用的API组件检索期间使用的API组件
IndexWriterIndexReader
IndexWriterConfigIndexSearcher
DirectoryDirectory
AnalyzerQueryParser或者Query子类
DocumentTopDocs
FieldScoreDoc--Term      



下面笔者就对上图组件一一剖析下

首页要介绍的就索引期间的各个类
1,IndexWriter是索引过程中的核心类,主要负责创建索引或者打开已有索引,提供对索引的
添加,删除,修改等操作
2,IndexWriterConfig这个API在低版本的Lucene中是没有此配置类的,这个类也比较重要,使用此类则需要在其构造方法中传入2个参数,第一个参数是Lucene当前的版本号,第二个是索引是使用的分词器,除了这个我们最常用的功能,里面还提供了大量工具方法,例如,设置内存里缓冲大小,设置文档数据批量提交时大小,获取线程状态,设置创建模式,以及是否开启复合索引的等等一系列,可以对索引做一些基本的配置优化等信息。
3,Directory这个类代表了Lucene索引的存放位置,是一个抽象类,它有一系列子类可以用来处理索引,使用不同的子类对于系统的性能,影响会很大,但归其本质上,提升性能,无非就拿空间换时间或拿时间或空间2中情况,在具体使用时,我们可以使用其子类来获取索引所在的存储路径,然后将其传给IndexWriter类构造方法里。
4,Analyzer这个类也是所有分析器的基类,文本文件在索引前,需要经过分析器处理,处理成对应的语汇单元,统一格式,它能提取有效的信息,过滤掉一些禁用词,Lucene自带有几个分析器,但大部分都是对英文或欧洲语言处理的,如果想要使用中文的分词器,可以使用其自带的SmartCN分词器,也可以用开源的IK,messeg4j等等,选择什么样的分析器是索引过程中很重要的一步,这个关键还得看自己的业务需求定。
5,Document代表一个文档的意思,类似于数据库的一行记录,我们可以向文档中,添加自己想要的域字段,然后在把一个个文档索引起来,提供检索。
6,Field就是文档中存储的域,每一个域都有一个域名和域值,这就类似数据库的字段名跟值一样,我们可以使用Field来精确控制各个域的值,最常用的有2个Field,一个是不提供分词的StringField和另外一个分词的TextFiled,当然还有其他的一些Field,在这里就不多介绍了。
7,IndexReader这个类用来获取Directory的子类打开的索引文件流,然后在将进IndexSearcher的构造方法里,进行查询组件的初始化操作,这个类再低版本的的Lucene里也是不存在的,在后来新的版本里才添加的类。
8,IndexSearcher这个类是程序搜索期间的核心类,是连接索引的桥梁,它是以只读的方式打开索引,提供了大量检索,排序,过滤的等等以及其他的一些功能。
9,QueryParser或Query都可以完成一些检索功能,不同的是QueryParser提供的功能更为强大,方便自定义开发一些检索方案,而Query及其麾下的一系列子类是Lucene中自带的一些API,使用这些API,大部分情况下都可以完成一些基本的检索,如果需要定制化自己的检索方案则需要使用QueryParser,大多数情况下,我们最常使用的是Query下面的TermQuery子类,当然还有其他大量的特定功能的Query子类存在。
10,TopDocs这个类是一个简单的容器指针,它一般会记录前N个检索的结果,在TopDocs中,它只会存储这个文档的docid以及获取的得分情况,另外这前N个结果,默认的排序方式,是按照得分的大小排列的。
11,ScoreDoc类通常我们使用的是一个数组,它里面也只会包含这个文档的docid以及获取的得分情况,与TopDocs不同的是,我们可以使用这个类,来进行类似数据库的分页操作,当然你得保证你有足够的内存,如果是海量数据的分页,这个操作很容易造成内存溢出,这时候我们就需要考虑其他方法了。
12,Term类是搜索功能最基本的单元,与Field类似,检索的时候需要传入域名及检索的字符串,是一个小而不可或缺的精简类。



至此,笔者已经对Lucene的基本的常用的几个类简单的剖析了一下,可能大多数情况下,我们知道他们怎么用,但是就是不太了解他们的基本概念。笔者觉得,如果真正的理解了这些东西,就可以在开发中或给同事的一些交流中带来极大的方便。

9
2
分享到:
评论
1 楼 静妙仙人 2017-07-07  
内容非常不错,就是字体能修改一下就好了

相关推荐

    lucene4.3源码

    Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会...

    lucene4.3 按坐标距离排序

    在IT领域,Lucene是一个非常著名的全文搜索引擎库,由Apache软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够轻松地在应用程序中实现全文检索功能。在"lucene4.3 按坐标距离排序"这个主题中...

    lucene4.3工具类

    lucene4.3增删改查的的一个工具类,对新手来说是一份不可多得的入门资料。

    lucene 4.3所用到的包

    全文检索lucene 4.3 所用到的3个jar包,包含lucene-queryparser-4.3.0.jar、 lucene-core-4.3.0.jar、lucene-analyzers-common-4.3.0.jar。

    Lucene4.3src 源代码

    lucene4.3源代码 censed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information ...

    lucene-4.3.1资源

    3. **查询**:当用户输入查询时,Lucene会解析查询字符串,生成查询对象,并使用查询对象在索引中查找匹配的文档。 4. **评分与排序**:Lucene根据相关性对匹配的文档进行评分,并按照评分进行排序,返回最相关的...

    基于lucene4.3的知识图谱搜索引擎XunTa(一种用"知识点"来找人的搜人引擎).zip

    1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。  输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。  可访问 http://www.xunta.so立即体验...

    lucene的IKAnalyzer以及兼容4.3

    本文将深入探讨IKAnalyzer的特性和其在Lucene 4.3中的兼容性问题及其解决方案。 **IKAnalyzer简介** IKAnalyzer( Intelligent Keyword Analyzer)是一款基于Java实现的中文分词工具,它主要针对中文的特性进行了...

    基于lucene的开发JavaEE项目

    《基于Lucene的JavaEE项目开发详解》 在信息技术领域,搜索引擎已经成为不可或缺的一部分,而Lucene作为开源全文搜索引擎库,以其高效、灵活的特点被广泛应用于各种JavaEE项目中。本项目将深入探讨如何利用Lucene...

    Lucene3.4开发入门.pdf

    Lucene3.4开发入门.pdf

    lucene2.9开发指南

    - **Analyzer**:分词器,StandardAnalyzer处理英文和中文,SmartChineseAnalyzer适用于智能中文分词,也可以使用第三方分词器。 - **MaxFieldLength**:控制域的最大长度,UNLIMITED表示无限制,LIMITED则有限制...

    Lucene In Action中文版第三章

    《Lucene In Action中文版第三章》主要涵盖了Lucene搜索引擎的核心概念之一——分析(Analysis)。分析是Lucene处理文本输入的关键步骤,它将用户提交的原始文本转换为可搜索的索引形式。理解并掌握分析过程对于优化...

    Lucene.net开发最全文档

    **Lucene.net 开发完全指南** Lucene.net 是一个开源的全文搜索引擎库,它是 Apache Lucene 的 .NET 版本,适用于 .NET 平台。Lucene.net 提供了高效、可扩展的搜索功能,广泛应用于网站内容检索、文档搜索、数据库...

    基于lucene.net开发的个人知识库

    《基于Lucene.Net开发的个人知识库》 在信息技术领域,高效的信息检索和管理是至关重要的。Lucene.Net,作为Apache Lucene项目的一个.NET版本,为开发者提供了强大的全文搜索引擎库,使得开发者能够轻松构建自己的...

    Lucene开发手册

    【Lucene开发手册】 Lucene是一个开源的全文检索库,由Apache软件基金会开发,主要用Java编写。作为一套API,Lucene提供了构建高效、可扩展的搜索引擎所需的核心工具。它并非一个完整的搜索引擎产品,而是一个搜索...

    lucene in action 第二版

    4. 书中提到了许多第三方的正面评价,如Java Lobby、Computing Reviews、The Server Side、***等。这些评价说明了本书的实用性和权威性,它不仅对于想要学习Lucene的读者来说是一本必备书,还对于希望了解搜索引擎...

    lucene开发流程

    开发流程的第一步是从各种数据源(如新闻、论坛、博客)中获取信息。这通常涉及到与数据库交互,通过SQL查询或API接口来获取需要的数据。 2. **数据预处理**: 获取到原始数据后,需要对其进行预处理,这包括读取...

    Lucene搜索引擎开发权威经典(附盘源码)【于天恩】.zip

    《Lucene搜索引擎开发权威经典》是由于天恩编著的一本深入探讨Lucene搜索引擎开发的专业书籍,这本书结合源码分析,旨在帮助读者掌握Lucene的核心技术和应用实践。Lucene是Apache软件基金会的一个开放源代码项目,它...

    Lucene开发指南

    《Lucene开发指南》是一份综合性的学习资料,旨在帮助开发者深入理解和熟练运用Apache Lucene这一强大的全文搜索引擎库。Lucene是Java语言实现的开源项目,广泛应用于信息检索、数据分析和大数据处理等领域。本指南...

Global site tag (gtag.js) - Google Analytics