`
九牛一毛
  • 浏览: 10140 次
社区版块
存档分类

【直播】Lucene学习进阶--概念篇

 
阅读更多

 

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学习资料** Lucene是一个高性能、可扩展的信息检索库,由Apache软件基金会开发,是Java编程语言中广泛使用的全文检索引擎库。它提供了文本分析、索引和搜索的基本功能,同时也支持高级搜索语法和查询操作。...

    data.rar学习lucene需要的数据文件

    本篇文章将围绕“data.rar学习lucene需要的数据文件”这一主题,深入探讨如何利用提供的数据文件学习并掌握Lucene的核心概念和技术。 首先,我们需要了解Lucene是什么。Lucene是一个高性能、全文本搜索库,它提供了...

    【54】2018年最新价值799元Elasticsearch顶尖高手系列:高手进阶篇视频教程 .txt

    根据给定文件的信息,...高手进阶篇视频教程”不仅包含了Elasticsearch的核心技术和高级特性,还提供了丰富的实战案例和技巧分享,非常适合那些希望深入了解Elasticsearch并将其应用于实际项目中的技术人员学习参考。

    Elasticsearch顶尖高手系列-高手进阶篇

    ### Elasticsearch顶尖高手系列-高手进阶篇 #### 引言 Elasticsearch是一款基于Lucene的开源搜索和分析引擎,广泛应用于全文检索、实时分析等场景。随着大数据时代的到来,Elasticsearch因其高性能、易用性及可扩展...

    Elasticsearch顶尖高手系列课程-核心知识篇+高手进阶篇(免费无加密)

    根据提供的文件信息,我们可以推断出这是一套关于Elasticsearch的学习资料,旨在帮助学习者掌握Elasticsearch的核心知识及进阶技巧。接下来,我们将基于这些信息,详细展开相关的知识点。 ### Elasticsearch简介 ...

    Lucene In Action second edition

    本书主要介绍了 Apache Lucene 3.0 的最新特性与应用方法,适合所有对 Lucene 技术感兴趣的学习者。 #### 二、Lucene 概述 ##### 2.1 什么是 Lucene? Apache Lucene 是一个高性能、全功能的文本搜索引擎库。它...

    Lucene常用的Demo

    本篇文章将深入探讨Lucene的几个常见示例,包括`LuceneDemo`、`LuceneZJ`、`Lucene_HelloWorld`,帮助初学者快速理解Lucene的基本操作。 1. **Lucene_HelloWorld** 这个示例是入门Lucene的首选,它展示了如何创建...

    2018年最新价值799元Elasticsearch顶尖高手系列:高手进阶篇视频教程

    ### Elasticsearch 高手进阶篇概览 Elasticsearch 是一个基于 Lucene 的开源搜索和分析引擎,广泛用于全文检索、结构化数据存储以及实时数据分析等场景。随着大数据时代的到来,Elasticsearch 成为了许多企业和...

    Elasticsearch核心知识篇、项目中如何使用、如何优化进阶

    #### 二、Elasticsearch高手进阶篇 ##### 1. 深度探秘搜索技术:基于Boost的细粒度搜索条件权重控制 - **概念理解**:在Elasticsearch中,可以使用Boost机制为特定字段或查询增加权重,从而影响最终的搜索结果排序...

    Lucene.in.Action.2nd.Edition.pdf

    这本书详尽地介绍了Lucene的核心概念和技术,旨在帮助开发者充分利用这一强大的开源工具。 Lucene是Java开发的全文搜索引擎框架,它为构建高性能、可伸缩的搜索应用提供了核心功能。Lucene的主要特点包括高效的倒排...

    Lucene.zip

    本篇文章将基于“Lucene.zip”中的笔记和代码,对Lucene进行全方位的解析,帮助读者从入门到深入理解其核心概念与实践技巧。 一、Lucene基础 1. **Lucene架构**:Lucene由索引阶段和搜索阶段两部分构成。索引阶段...

    Lucene 全文检索

    ### Lucene 的核心概念 1. **索引**:在 Lucene 中,索引是文本数据的一种高效存储方式,类似于图书的目录。通过分析和分词,将文本转换为一系列可搜索的关键词,然后构建倒排索引,使得快速查找匹配文档变得可能。...

    基于lucene 的简单搜索引擎.rar

    **基于Lucene的简单搜索引擎构建详解** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索库,提供了一个...通过学习和实践,你可以逐步掌握Lucene的精髓,为更复杂的信息检索需求打下坚实基础。

    java学习路线图

    本篇将围绕“Java学习路线图”这一核心主题,深度解析Java学习的各个阶段及其关键知识点,旨在帮助学习者构建一个系统而全面的Java知识体系。 ### Java基础 #### 重点内容: - **Java语法**:理解变量、数据类型...

    Getting Started with Hibernate Search

    本篇文章将深入探讨如何从零开始使用Hibernate Search,涵盖安装、配置、实体映射、构建索引、查询索引等内容。 #### 安装与配置 为了使用Hibernate Search,你需要对Hibernate的基本操作有所了解,熟悉Hibernate ...

    Lucnen示例,教学,演示代码。

    Lucene 示例、教学和演示代码覆盖了从基础的索引创建、查询到高级特性的实现,是学习和理解 Lucene 功能的好资源。通过实践这些代码,开发者可以更好地掌握 Lucene 在实际项目中的应用,从而提升文本搜索功能的开发...

Global site tag (gtag.js) - Google Analytics