搜索技术

您所在的位置:网站首页 词条搜索数据 搜索技术

搜索技术

2024-07-16 13:16| 来源: 网络整理| 查看: 265

全文检索

文章目录 全文检索一.数据及数据检索方式1.数据分类2.检索方式: 二.全文检索原理索引中存什么、怎么存?

一.数据及数据检索方式

image-20200817173601498

1.数据分类

生活中遇到的数据可以分为结构化数据和非结构化数据

结构化数据: 具有固定格式或有限长度的数据,可以用二维表结构来逻辑表达实现的,如数据库,元数据等。非结构化数据: 指不定长或无固定格式的数据,如办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。也叫全文数据 2.检索方式: 对于结构化数据,由于格式明确,结构清晰,我们通常可以通过一定的规则来进行检索对于非结构化数据通常我们无法设计出规则进行检索,因为非结构化数据本身就是不具有规则的,所以我们通常有两种方案来对非结构化数据进行检索 顺序查找 要查找一个包含指定词条的文档时,依次查找所有文档,对于每个文档从头到尾进行查找,是否存在目标词条全文检索 通过索引查找:先把每个文档中的每个关键词提取出来建立起索引,索引中包含了关键词和文档之间的关系,(例如关键词1在文档1中出现一次,在文档2中出现两次),在检索目标词条的时候再通过索引快速匹配到文档,这种先建立索引在通过索引进行搜索的方式叫做全文检索.

通过以上说明可以了解到:顺序查找是直接进行查找,而全文检索是先建立索引在进行查找,创建索引需要消耗部分时间和空间,但是创建索引之后的检索会极大地提高效率,由此也可以分析出,全文检索适合大量数据的检索,通过预先的时间和空间上的消耗来换取检索时的性能:

二.全文检索原理

目前主流的方式是基于Lucene实现全文检索,《Lucene In Action》中提到一个流程图,他概括了全文检索的一般流程:

image-20200818110010099

可以看出,全文检索实现主要分为两步:建立索引和通过索引查询 ,而索引无疑是全文检索的核心,那么,就有三个核心问题:

索引中存什么?索引如何建立?如何搜索索引? 索引中存什么、怎么存?

根据全文检索的定义,我们知道,对于非结构化数据来说(通常是各种文档),我们拿到一个文档可以很容易的知道文档中的所有内容,但是想要通过一部分内容来知道这些内容出现在哪些文档中是一件非常困难的事情,原因是文档映射了内容而内容无法映射文档。

这就像书本的目录,目录中每一个章节对应了一个页码,我们可以通过页码快速的找到章节内容,但是不太容易根据书中的某个词或某一句话知道它都在哪些章节出现过。

所以,全文检索的思想就是要建立内容片段(词或短语)到文档的映射

简单举个栗子:

将下面三篇文档进行处理,得到右侧的映射关系

在这里插入图片描述 处理文档得到映射关系的过程包括分词,单词处理等步骤,这里不做赘述(将会在下一篇文档中结合Lucene进行说明)。

得到单词到文档的映射之后,查询就非常简单了。假设要查询一个短语,只需要按照处理文档相同的方式将短语拆分,然后在吧包含两个短语的文档拿出来就可以了。

上面通过处理文档得到的映射关系可以称之为索引,而因为他是和正常的索引方向相反,索引也被称之为倒排索引

当然,在全文检索的思想中,倒排索引并不像图上描述的那样简单,它不仅仅要包含每个词出现过的文档,还需要包含每个该词在这片文档中出现的频次(词频)并且单词指向的文档 列表应该按照词频进行排序,这是为了在检索过程中计算检索出来的文档相关度。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3