`

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学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...

    lucene学习

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

    Lucene的的学习资料及案例

    Lucene的的学习资料及案例,包括一个lucene的学习资料总结。供大家学习使用,也有本人写的一个小案例。

    Lucene学习源码.rar

    Lucene学习源码.rar

    lucene 学习文档

    这里面是lucene的相关学习资料,特别适合新手学习。

    lucene学习-02

    lucene学习

    lucene学习资料收集

    NULL 博文链接:https://huanglz19871030.iteye.com/blog/1278428

    lucene学习pdf2

    lucene的讲课文档, luke工具,用来查看lucene的内容。

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

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

    Lucene学习文档

    Lucene学习文档Lucene学习文档Lucene学习文档Lucene学习文档

    lucene学习总结

    lucene学习总结:lucene全文检索的原理,索引文件的格式,lucene的整体架构

    Lucene.net学习

    Lucene.net学习.docx

    Lucene 3.0 原理与代码分析PDF

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

    lucene实例lucene实例

    lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例

    搜索引擎lucene学习资料

    本资源有三个内容: 电子书《搜索引擎--原理、技术与系统》 和两个网友的lucene学习分析资源。

    Lucene3.3.0学习Demo

    这是我通过对Lucene3.3.0源码进行了简单解读,依据应用详细的做了很多Demo,大家可以一道学习。

    lucene讲义 叫你用lucene算法

    lucene学习教程lucene讲义 叫你用lucene算法

    lucene学习入门程序

    lucene学习入门程序,程序全面系统的描述了lucene各个接口的调用,包括高亮显示,范围搜索等

    超系统学习Lucene全文检索技术视频教程

    视频详细讲解,需要的小伙伴...学习Lucene对日后学习它的下游技术产品ElasticSearch和Solr将会大有帮助。 系统的学习Lucene全文检索技术,全面掌握搜索原理和底层知识,为学习其他应用层面搜索技术打下坚实的基础。

    lucene学习03

    lucene学习

Global site tag (gtag.js) - Google Analytics