`

Lucene 学习 002

阅读更多

一、Lucene基础:
大纲:1. 信息获取与搜索引擎的发展
2. Lucene的历史
3. 建立索引(索引库)与搜索

1. 信息获取技术包含:信息的表示、存储、组织和对信息的访问方法。信息的表示和组织是为了用户更容易的访问到需要的信息。

1.1 一般来说,信息获取的流程分为以下四步:

1.1.1 获取信息之前,要构建文本数据库,即将来需要进行检索的数据(被检索的数据)
1.1.2 需要建立文档的索引,通过文档索引可以检索到对应的文本数据库中对应的数据;
有很多建立文档索引的方法,但是用的最多的还是"倒排索引技术",其中Lucene就是采用的这种建立文档索引的技术
1.1.3 完成文档索引的建立之后就可以进行检索了,此时需要用户提供一个查询关键字,该关键字将被分析
然后利用一些文本处理技术进行处理,当然也可以根据具体的需求进行一系列的处理。
1.1.4 查询关键字准备好之后,进入查询,根据查询关键字可以与文档索引中的数据得到匹配
进而得到文本数据库中与匹配上的文档索引对应的数据,然后反馈给用户,当然反馈之前我们可以进行排序等处理,
让最接近用户需求的信息排在最前面显示

2. 搜索引擎:分为"全文搜索引擎(FullText Search Engine)"和"分类目录(Directory)"

2.1 全文搜索引擎:通过一个叫网络机器人(Spider)或者叫网络蜘蛛(Crawlers)的软件,自动分析网络上的各种连接并且获取网页信息内容
而且会按照规则加以分析整理,记入数据库。

优缺点:使用关键字和一定的语法;全文搜索引擎因为依靠网络机器人等收集数据,所以数据库的容量非常庞大,但是它的查询往往不准确。

实例:像Google和百度都是全文搜索引擎

2.2 分类目录:通过人工的方式收集整理网站资料形成数据库。

优缺点:建立多级目录树对网站进行分类;分类目录因为依靠人工收集和整理网站,所以数据库数据容量非常有限,但是它能提供非常准确的查询。

实例:像搜狐、新浪、网易等都是分类目录

2.3 搜索引擎的概念:

2.3.1 第一代搜索引擎:是依靠人工提炼的分类目录搜索,以"搜狐"为代表
2.3.2 第二代搜索引擎:是依靠与机器抓取,并建立在超级链接的分析技术基础之上的网页搜索
特点是信息量大,更新及时,但是搜索结果准确度不高。以"Google"为代表
2.3.3 第三代搜索引擎:是把"智能化"、"人机交互"等功能融入了主流。将自动分类技术、中文内容分析技术和区域识别技术应用到大型搜索引擎中,
除了在信息检索速度、更新频率等基础技术指标方面处于领先地位外,它的网页相关检索、拼音纠错、模糊查询和语义查询技术也具有很高的水平。
此外,还兼备了新闻、MP3、Flash、图片等搜索功能,已能够提供全面、综合的信息搜索服务!

3. Lucene的历史:Lucene是一个支持全文检索的开源工具包。

3.1 什么是全文检索与全文检索系统

3.1.1 全文检索:指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,
指明该词在文章中出现的次数和位置,当用户查询时,检索程序就会根据事先建立的索引进行查找,并将查找的结果反馈给用户。
这个过程类似与通过字典中的检索字表查询汉字的过程!

** 全文检索的方法主要分为:按字检索和按词检索两种方法!

3.1.1.1 按字检索:指对于文章中的每个字都建立索引,检索时将词分为字的组合。
对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中的字与词就有很大区别。

3.1.1.2 按词检索:指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。
英文等西方文字由于按照空白切分词,因此实际上与按字检索比较类似,添加同义处理也很容易。
中文文字则需要切分字词,以达到按词检索的目的,关于这方面的问题,
是当前全文检索技术尤其是中文全文检索技术中的难点,这里不做详述,
Lucene对这方面有自己的解决方法。

3.1.2 全文检索系统:是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。
一般来说全文检索需要具备建立索引和提供查询的基本功能,
此外现代的全文检索系统还需要具有方便的用户接口、面向WWW的开发接口、二次应用开发接口等。

** 功能上:全文检索系统具有建立索引、处理查询并返回查询结果集、增加索引、优化索引结构等功能,外围则有各种应用程序所具有的功能组成。
** 结构上:全文检索系统具有索引引擎、查询引擎、文本分析引擎、对外接口等,加上各种应用程序共同构成了全文检索系统。

3.2 什么是Lucene :Lucene是Apache软件基金会Jakarta项目组的一个子项目(目前已经提升为了一个顶级项目),是一个开放源代码的全文检索引擎工具包,
即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,它提供了完整的查询引擎和索引引擎及部分文本分析引擎(英文和德文两种西方语言)。
Lucene的目的是为软件开发人员提供一个简单易用的工具包(可说成提供简易的API接口),以方便在目标系统中实现全文检索的功能,
或者是以此为基础建立起完整的全文检索引擎。Lucene作者是Doug Cutting,是一位资深全文索引/检索专家,Lucene是Doug Cuuting的Middle Name(中间名)。

例如:Eclipse的帮助部分就是使用了Lucene作为检索引擎!

3.3 Lucene能做什么(功能):Lucene可以对任何的数据做索引和搜索!!Lucene不管数据源是什么格式,只要它能被转化为文字(文本)的形式,
就可以被Lucene分析利用。也就是说Lucene针对的检索数据是文本格式的数据!!
也就是说不管数据源是Word、PDF、Html还是其他什么形式的文件,只要你可以从中抽取出文字形式的内容就可以被Lucene所用,
就可以用Lucene对他们进行索引进而进行搜索!!

4.建立索引与搜索:建立索引和搜索是搜索引擎最重要也是最基础的两个部分,不过这涉及到方方面面很多内容,下边我们先来简单了解,以后章节将会深入体会具体内涵。

4.1 索引:传统的基本的查询方法可以通过顺序扫描文本的方式来实现,这被成为"顺序查询",
不需要对文档集合中的数据信息做任何的预处理,当用户查询时直接在文档中进行简单的字符串匹配就可以实现,
但是这种方法如果遇到非常庞大的文档集合,而还是这样顺序查询,那么它的效率会非常低,达不到用户的需求。
因此,人们就创建了非常多的查询方式:使用索引就是一种比较常用的方式!

4.1.1 概念:索引是在搜索时使用到的一种特殊的数据结构。当文档的数据量比较庞大,并且文档中的信息相对稳定(不会随时变化)时,
建立索引可以大大提高查询的效率。

**注意:索引结构不支持快速的信息更新,就是说建立完索引后,如果文档中的信息发生了变化,
那么必须重新建立索引(即同时也要对索引更新),这样才能使索引检索到最新的文档中的信息!

**注意:在实际中,通常是定期更新索引,并把索引添加(覆盖)到原索引中实现的。

4.1.2 应用:使用的索引进行查询的时候,首先对需要索引的文档进行预处理,建立关于这些文档的索引机构(索引库,就是建立索引)。

4.1.3 索引的技术种类:倒排索引、后缀数组和签名文件。

4.1.3.1 倒排索引:目前倒排索引技术是应用最为广泛的索引技术,它对于关键词的搜索非常有效,Lucene就是使用的倒排索引技术。

4.1.3.2 后缀数组:在短语查询中具有很快的速度,但是这样的数据结构在构造和维护时都比较复杂一些。

4.1.3.3 签名文件:在20世纪80年代时期比较流行,但目前已被倒排索引技术超越!

 

4.2 搜索:检索系统在建立好索引之后,就可以对用户的查询做出响应,只不过该响应过程是通过搜索过程完成来实现的。
搜索的目的就是为用户提供高质量的搜索结果。既要求搜索结果快,有要求结果准确,这就涉及到搜索算法的问题。
此外,搜索程序在搜索到一定数量的结果之后,就会以一定的方式反馈给用户,其中我们会顾及以什么样的格式、
什么样的次序(当然会希望想要的结果排在最前面)来显示搜索结果,这会涉及到搜索结果排序的问题。
Lucene之所以会这么优秀,是因为它拥有高效的搜索算法和丰富的排序方法。

 

4.3 倒排索引:是一种面向单词的索引机制,利用倒排索引可以提高检索时的速度。
通常情况下,倒排索引结构由"词典"和"出现情况"两部分组成。
对于每一个单词,都会有一个词汇列表记录单词在所有文档中出现的位置
这里的位置指的是单词在文档中的位置(文本中的第几个单词),也可以是单词对应的字符的位置(文本中的第几个字符)
**注意:这里倒排索引是针对每一个单词,记录它在所有文档中出现的位置;而不是对每一个文档中这个单词的位置都分别记录(这是一般索引的做法)

**倒排索引与一般索引方式对比:

4.3.1 一般索引:建立的是"文档到单词"的映射关系索引,即在生成的索引文件中记录的是"文档到单词"的映射关系。
例如:有文章A和B,那么一般索引的方法,对于文章A建立一个索引记录(可认为是索引文件),记录文章A中的所有单词的位置和出现次数情况等,
对于文章B又会建立一个索引记录,然后记录文章B中所有单词的位置和出现次数情况。

4.3.2 倒排索引:建立的是"单词到文档"的映射关系索引,即在生成的索引文件中记录的是"单词到文档"的映射关系。
例如:有文章A和B,且A和B中都有dog和pig单词而B中有cat单词,那么倒排索引的方法,
它是对于每一个不同的单词与文章建立关联,就是倒排索引是针对每个单词建立一个索引记录,
具体的就是dog单词对应一个索引记录(可认为是一个索引文件),
dog对应的索引记录中记录了dog出现情况在A、B中个出现一次,还会记录出现的位置
这样倒排索引的结果就是对dog、pig和cat分别建立一个索引记录,又因为用户查询的时候都是输入关键字进行查询,
这样就可以很快的找到所有出现对应查询关键的单词的出现情况和位置,比起一般索引会非常的节省时间,因为如果是一般索引的话,
会对每一个文章中的每一个索引进行遍历,看看是否有搜索的单词,有的话拿出它的出现次数和位置等信息,这样会很耗时!

分享到:
评论

相关推荐

    lucene学习资料收集

    【标题】:“Lucene学习资料收集” 【描述】:Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。这个资料集可能包含了关于如何理解和使用Lucene的各种资源,特别是通过博主huanglz19871030在iteye上的...

    Lucene的的学习资料及案例

    **Lucene学习指南** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单的API,使得开发者能够方便地在应用中实现全文检索功能。本篇文章将...

    lucene学习

    Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词...

    lucene学习pdf2

    "lucene学习pdf2" 提供的文档,无疑是对Lucene深入理解的一把钥匙,它涵盖了Lucene的核心概念、操作流程以及高级特性。 首先,Lucene的基础知识是必不可少的。Lucene的核心在于索引和搜索,它将非结构化的文本数据...

    Lucene学习源码.rar

    本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...

    lucene学习资料

    《Lucene学习资料》 Lucene是一个开源的全文搜索引擎库,由Apache软件基金会维护。它提供了高级的文本分析和索引功能,使得开发者能够轻松地在应用程序中集成强大的搜索功能。这个资料包中的《Lucene in Action_2nd...

    Lucene-2.0学习文档

    本篇文章将围绕"Lucene-2.0学习文档"的主题,结合Indexer.java、MyScoreDocComparator.java和MySortComparatorSource.java这三个关键文件,深入探讨Lucene的核心概念和实际应用。 首先,我们来看`Indexer.java`。这...

    lucene学习-02

    【标题】:“Lucene学习-02” 在深入探讨“Lucene学习-02”这一主题之前,我们先来理解一下Lucene的核心概念。Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,广泛应用于各种搜索引擎和信息检索系统。...

    Lucene3.3.0学习Demo

    **Lucene 3.3.0 学习Demo** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。在3.3.0版本中,Lucene提供了强大的文本搜索功能,包括分词、索引创建、查询解析和结果排序等。这个"Lucene3.3.0学习Demo...

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

    lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子...

    Lucene.net学习帮助文档

    **Lucene.net学习帮助文档** Lucene.net是一个开源全文搜索引擎库,它是Apache Lucene项目的一部分,专门针对.NET Framework进行了优化。这个压缩包包含了Lucene.net的源码和中文学习文档,旨在帮助开发者深入理解...

    Lucene 3.0 原理与代码分析PDF

    Lucene学习总结之一:全文检索的基本原理 Lucene学习总结之二:Lucene的总体架构 Lucene学习总结之三:Lucene的索引文件格式(1) Lucene学习总结之三:Lucene的索引文件格式(2) Lucene学习总结之三:Lucene的...

    搜索引擎lucene学习资料

    通过这些学习资料,读者可以系统地学习搜索引擎的理论基础,掌握Lucene的核心功能,同时也能了解到如何在实际项目中应用这些技术,提升搜索系统的性能和用户体验。这些知识对于从事信息检索、网站开发、大数据分析等...

    Lucene学习工具包.zip

    **Lucene学习工具包** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"Lucene学习工具包.zip"包含了学习Lucene所需的重要资料和资源,旨在帮助开发者深入理解和掌握Lucene的核心概念、功能...

    lucene学习总结

    **Lucene学习总结** 在深入理解Lucene之前,我们首先需要了解什么是全文检索。全文检索是一种从大量文本数据中快速查找所需信息的技术。它通过建立索引来实现高效的搜索,而Lucene正是Java环境下最著名的全文搜索...

    lucene4.8学习资料和案例

    《Lucene 4.8学习指南与实战案例分析》 Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发,主要用于Java环境。版本4.8在功能和性能上都有显著提升,是许多开发者进行文本检索应用开发的重要工具。本文将...

Global site tag (gtag.js) - Google Analytics