Lucene 软件包分析
Lucene 软件包的发布形式是一个 JAR 文件,下面我们分析一下这个 JAR 文件里面的主要的 JAVA 包,使读者对之有个初步的了解。
Package: org.apache.lucene.document
这个包提供了一些为封装要索引的文档所需要的类,比如 Document, Field。这样,每一个文档最终被封装成了一个 Document 对象。
Package: org.apache.lucene.analysis(分析)
这个包主要功能是对文档进行分词,因为文档在建立索引之前必须要进行分词,所以这个包的作用可以看成是为建立索引做准备工作。
Package: org.apache.lucene.index(索引)
这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的类:IndexWriter 和 IndexReader,其中 IndexWriter 是用来创建索引并添加文档到索引中的,IndexReader 是用来删除索引中的文档的。
Package: org.apache.lucene.search
这个包提供了对在建立好的索引上进行搜索所需要的类。比如 IndexSearcher 和 Hits(点击,命中), IndexSearcher 定义了在指定的索引上进行搜索的方法,Hits 用来保存搜索得到的结果。
一个简单的搜索应用程序
假设我们的电脑的目录中含有很多文本文档,我们需要查找哪些文档含有某个关键词。为了实现这种功能,我们首先利用 Lucene 对这个目录中的文档建立索引,然后在建立好的索引中搜索我们所要查找的文档。通过这个例子读者会对如何利用 Lucene 构建自己的搜索应用程序有个比较清楚的认识。
建立索引
为了对文档进行索引,Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory。下面我们分别介绍一下这五个类的用途:
Document
Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。
Field
Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。
Analyzer(分词器)
在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。
IndexWriter
IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。
Directory(目录)
这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。
摘自rwg109的lucene入门实例。
Query
这是一个抽象类,他有多个实现,比如 TermQuery, BooleanQuery, PrefixQuery. 这个类的目的是把用户输入的查询字符串封装成 Lucene 能够识别的 Query。
Term
Term 是搜索的基本单位,一个 Term 对象有两个 String 类型的域组成。生成一个 Term 对象可以有如下一条语句来完成:Term term = new Term(“fieldName”,”queryWord”); 其中第一个参数代表了要在文档的哪一个 Field 上进行查找,第二个参数代表了要查询的关键词。
TermQuery
TermQuery 是抽象类 Query 的一个子类,它同时也是 Lucene 支持的最为基本的一个查询类。生成一个 TermQuery 对象由如下语句完成: TermQuery termQuery = new TermQuery(new Term(“fieldName”,”queryWord”)); 它的构造函数只接受一个参数,那就是一个 Term 对象。
IndexSearcher
IndexSearcher 是用来在建立好的索引上进行搜索的。它只能以只读的方式打开一个索引,所以可以有多个 IndexSearcher 的实例在一个索引上进行操作。
Hits
Hits 是用来保存搜索的结果的。
简单API:http://www.iteye.com/topic/573899
分享到:
相关推荐
**Lucene学习资料** Lucene是一个高性能、可扩展的信息检索库,由Apache软件基金会开发,是Java编程语言中广泛使用的全文检索引擎库。它提供了文本分析、索引和搜索的基本功能,同时也支持高级搜索语法和查询操作。...
本篇文章将围绕“data.rar学习lucene需要的数据文件”这一主题,深入探讨如何利用提供的数据文件学习并掌握Lucene的核心概念和技术。 首先,我们需要了解Lucene是什么。Lucene是一个高性能、全文本搜索库,它提供了...
根据给定文件的信息,...高手进阶篇视频教程”不仅包含了Elasticsearch的核心技术和高级特性,还提供了丰富的实战案例和技巧分享,非常适合那些希望深入了解Elasticsearch并将其应用于实际项目中的技术人员学习参考。
### Elasticsearch顶尖高手系列-高手进阶篇 #### 引言 Elasticsearch是一款基于Lucene的开源搜索和分析引擎,广泛应用于全文检索、实时分析等场景。随着大数据时代的到来,Elasticsearch因其高性能、易用性及可扩展...
根据提供的文件信息,我们可以推断出这是一套关于Elasticsearch的学习资料,旨在帮助学习者掌握Elasticsearch的核心知识及进阶技巧。接下来,我们将基于这些信息,详细展开相关的知识点。 ### Elasticsearch简介 ...
本书主要介绍了 Apache Lucene 3.0 的最新特性与应用方法,适合所有对 Lucene 技术感兴趣的学习者。 #### 二、Lucene 概述 ##### 2.1 什么是 Lucene? Apache Lucene 是一个高性能、全功能的文本搜索引擎库。它...
本篇文章将深入探讨Lucene的几个常见示例,包括`LuceneDemo`、`LuceneZJ`、`Lucene_HelloWorld`,帮助初学者快速理解Lucene的基本操作。 1. **Lucene_HelloWorld** 这个示例是入门Lucene的首选,它展示了如何创建...
### Elasticsearch 高手进阶篇概览 Elasticsearch 是一个基于 Lucene 的开源搜索和分析引擎,广泛用于全文检索、结构化数据存储以及实时数据分析等场景。随着大数据时代的到来,Elasticsearch 成为了许多企业和...
#### 二、Elasticsearch高手进阶篇 ##### 1. 深度探秘搜索技术:基于Boost的细粒度搜索条件权重控制 - **概念理解**:在Elasticsearch中,可以使用Boost机制为特定字段或查询增加权重,从而影响最终的搜索结果排序...
这本书详尽地介绍了Lucene的核心概念和技术,旨在帮助开发者充分利用这一强大的开源工具。 Lucene是Java开发的全文搜索引擎框架,它为构建高性能、可伸缩的搜索应用提供了核心功能。Lucene的主要特点包括高效的倒排...
本篇文章将基于“Lucene.zip”中的笔记和代码,对Lucene进行全方位的解析,帮助读者从入门到深入理解其核心概念与实践技巧。 一、Lucene基础 1. **Lucene架构**:Lucene由索引阶段和搜索阶段两部分构成。索引阶段...
### Lucene 的核心概念 1. **索引**:在 Lucene 中,索引是文本数据的一种高效存储方式,类似于图书的目录。通过分析和分词,将文本转换为一系列可搜索的关键词,然后构建倒排索引,使得快速查找匹配文档变得可能。...
**基于Lucene的简单搜索引擎构建详解** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索库,提供了一个...通过学习和实践,你可以逐步掌握Lucene的精髓,为更复杂的信息检索需求打下坚实基础。
本篇将围绕“Java学习路线图”这一核心主题,深度解析Java学习的各个阶段及其关键知识点,旨在帮助学习者构建一个系统而全面的Java知识体系。 ### Java基础 #### 重点内容: - **Java语法**:理解变量、数据类型...
本篇文章将深入探讨如何从零开始使用Hibernate Search,涵盖安装、配置、实体映射、构建索引、查询索引等内容。 #### 安装与配置 为了使用Hibernate Search,你需要对Hibernate的基本操作有所了解,熟悉Hibernate ...
Lucene 示例、教学和演示代码覆盖了从基础的索引创建、查询到高级特性的实现,是学习和理解 Lucene 功能的好资源。通过实践这些代码,开发者可以更好地掌握 Lucene 在实际项目中的应用,从而提升文本搜索功能的开发...