袁庭新ES系列03节 | 倒排索引

本文详细介绍了Lucene的全文检索实现,包括索引和搜索流程图,以BOSS招聘网站为例,讲解了索引的创建过程,涉及文档对象、分析、倒排索引的创建和查询。重点在于倒排索引结构如何支持快速搜索和文档定位。
摘要由CSDN通过智能技术生成

前言

我们对Lucence的基本概念了解后,那Lucence是如何实现全文检索的?以及它的原理是什么?下面跟着袁老师继续探索Lucence的相关技术,揭开它的面纱。

一. 索引和搜索流程图

索引和搜索流程图见如下所示:

1.绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:

确定原始内容即要搜索的内容 => 采集文档 => 创建文档 => 分析文档 => 索引文档

2.红色表示搜索过程,从索引库中搜索内容,搜索过程包括:

用户通过搜索界面 => 创建查询 => 执行搜索 => 从索引库搜索 => 渲染搜索结果

二. 全文检索解析

我们以BOSS招聘网站的搜索为例,在网站上输入关键字搜索显示的内容不是直接从数据库中来的,而是从索引库中获取的,网站的索引数据需要提前创建的。以下是创建的过程:

第一步:获得原始文档

就是从MySQL数据库中通过SQL语句查询需要创建索引的数据。

第二步:创建文档对象(Document)

把查询的内容构建成Lucene能识别的Document对象,获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档,文档中包括一个一个的域(Field),这个域对应就是表中的列。

注意:每个Document可以有多个Field,不同的Document可以有不同的Field,同一个Document可以有相同的Field(域名和域值都相同)。每个文档都有一个唯一的编号,就是文档id。

第三步:分析文档

将原始内容创建为包含域(Field)的文档(Document),需要再对域中的内容进行分析,分析的过程是经过对原始文档提取单词、将字母转为小写、去除标点符号、去除停用词等过程生成最终的语汇单元,可以将语汇单元理解为一个一个的单词。

分好的词会组成索引库中最小的单元Term,一个Term由域名和词组成。

第四步:创建索引

对所有文档分析得出的语汇单元进行索引,索引的目的是为了搜索,最终要实现只搜索被索引的语汇单元从而找到Document(文档)。

注意:创建索引是对语汇单元索引,通过词语找文档,这种索引的结构叫倒排索引结构。 倒排索引结构是根据内容(词语)找文档,如下图:

倒排索引结构也叫反向索引结构,包括索引和文档两部分,索引即词汇表,它的规模较小,而文档集合较大。

三. 倒排索引

倒排索引记录每个词条出现在哪些文档及在文档中的位置,可以根据词条快速定位到包含这个词条的文档及出现的位置。

  • 文档:索引库中的每一条原始数据,例如一个商品信息、一个职位信息。
  • 词条:原始数据按照分词算法进行分词,得到的每一个词。

创建倒排索引,分为以下几步。

1.1 创建文档列表

Lucene首先对原始文档数据进行编号(DocID),形成列表,就是一个文档列表。

1.2 创建倒排索引列表

对文档中数据进行分词,得到词条(分词后的一个又一个词)。对词条进行编号,以词条创建索引。然后记录下包含该词条的所有文档编号(及其它信息)。

1.3 搜索的过程

当用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户要搜索的所有词条,然后拿着这些词条去倒排索引列表中进行匹配。找到这些词条就能找到包含这些词条的所有文档的编号。然后根据这些编号去文档列表中找到文档。

四. 查询索引

查询索引也是搜索的过程。搜索就是用户输入关键字,从索引(Index)中进行搜索的 过程。根据关键字搜索索引,根据索引找到对应的文档。

第一步:创建用户接口,即用户输入关键字的地方。

第二步:创建查询,指定查询的域名和关键字。

第三步:执行查询。

第四步:渲染结果(结果内容显示到页面上,关键字需要高亮处理)。

五. 结语

我们一块儿回顾下下本节主要学习的内容,在这一节中我们介绍了索引和搜索流程图,并对全文检索的创建过程进行了分析。最后对倒排索引进行的剖析,以及索引是如何被查询通过案例进行了阐述和介绍。这一节的内容你学会了吗?

今天的内容就分享到这里吧。关注「袁庭新」,干货天天都不断!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值