Lucene学习笔记之三:全文搜索详解

exitzhang 2012-11-22

全文搜索详解主要是对其的组成部分和流程做一个详细的说明,有助于我们接下来学习lucene。

Lucene学习笔记之一:信息检索与全文检索这篇文章中,我们已经说过,全文搜索是按索引来找,效率高(从字典的索引找,再找到哪一页,效率会高),也就是要建立索引,然后进行搜索的过程。

Lucene学习笔记之二:lucene是什么这篇文章中介绍了lucene是什么,也就是为了更好的进行建立索引和搜索。

在全文搜索工具中,都是由这样的三部分组成:索引部分、分词部分、搜索部分。为什么是由这三部分组成呢?我们来想一想,为了要提交检索的效率,得建立索引;从哪来的索引,必须对资源(文档,文章)进行分词;搜索更不用说了

全文检索中建立索引与进行检索的流程

建立索引,就是对待搜索的信息进行一定的分析,并将分析结果按照一定的组织方式存储起来,通常将这些结果存储在文件中。存储分析结果的文件的集合就是索引。在查询时,先从索引中查找,由于索引是按照一定的结构组织的,所以查询的速度非常快。

为提供检索的功能,信息检索系统会事先做一些准备工作:信息的采集与加工。

  1. 信息采集:把信息源的信息拷贝到本地,构成待检索的信息集合。(信息源可以是互联网中的网页、硬盘中的txt、doc、pdf等格式的电子文档,或是文件系统上的文件等等)。

  2. 信息加工:为采集到本地的信息编排索引,为查询做好准备。

流程如下:

Lucene学习笔记之三:全文搜索详解

分词器

分词器,对文本资源进行切分,将文本按规则切分为一个个可以进行索引的最小单位(关键词)。

Lucene学习笔记之三:全文搜索详解

建立索引和进行搜索时都要用到分词器。为了保证能正确的搜索到结果,在建立索引与进行搜索时使用的分词器应是同一个。

索引文件结构

索引库是一组文件的集合。

Lucene学习笔记之三:全文搜索详解

索引文件的检索:

索引表规模相对较小,文档集合规模较大。进行检索时,先从检索索引表开始,然后找到相对应的文档。如果查询中仅包含一个关键词,则在索引表中找到该单词,并取出他对应的文档就可以了。如果查询中包含多个关键词,则需要将各个关键字检索出的记录进行合并。

索引文件的维护:

维护索引用三个操作:插入、删除和更新文档。但是更新操作需要较高的代价,因为文档修改后(即使是很小的修改),就可以会造成文档中的很多的关键词的位置发生了变化,这是需要频繁的读取和修改记录,这种代价是相当高的。因此,一般不进行更新操作,而是使用“先删除,后创建”的方式代替更新操作。

今天说写到这里,下节见。

本文链接:Lucene学习笔记之三:全文搜索详解,本文由huangyineng原创,转载请注明出处

相关推荐

PHP100 / 0评论 2019-03-27