文本索引和搜索
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
优点:
倒排文件的建立
建立倒排文件的最关键问题是由于需要 索引的文档数量过大,有可能导致不能 在内存中存储整个倒排文件。 根据索引文档的大小,介绍三种倒排文 件的建立方法。
基于内存的方法 基于排序的方法 基于归并的方法
基于排序的方法
基于内存方法的不足
从磁盘读取和分析文档的操作需要花费较多时间, 如果反复调用,必将成为倒排文件建立的一个瓶颈 方法一:存储分析好的文本。
对检索出的记录表进行后处理,以实现短语查询、相 邻查询或者布尔查询。
记录表检索
记录表操作
词汇表检索
规模相对较小的独立文件,全部调入内存 常用数据结构
树状结构,如:B树和Trie树
前缀查询和范围查询 检索速度快,但是不支持前缀查询和范围查询等
散列
需要根据实际需求情况,决定采用什么样 的数据结构。
维护倒排文件通常需要三种维护操作
插入、删除和更新文档或文档集合 通常的更新操作需要较高的代价
例如,要在存储了单词位置信息的倒排文件中进 行一篇文档的更新,即使该文档仅仅改动很小的 部分,文档中出现的大部分单词的记录表都需要 做出改动。 原因:单词的位置很可能发生变化,这就需要频 繁地读取和修改记录表,这种代价是相当高的。
倒排索引主要内容
倒排索引简介 倒排文件的使用 倒排文件的建立 倒排文件的维护 倒排文件的压缩 倒排文件的性能分析 词汇表的存取
倒排文件的压缩
优点
减少内存和磁盘的空间占用 提高磁盘的吞吐量,提高索引维护和查找的效率 有损压缩
压缩分类
去停用词、词干提取等技术 使用这些技术会损失一些原文中的信息;
也称倒排索引,索引对象是文档或文档集合中 的单词等,用来存储这些单词在一个文档或者 一组文档中的存储位置,是对文档或文档集合 的一种最常用的索引机制 倒如:有些书往往在最后提供的索引(单词—页 码列表表)就可以看成是一种倒排索引.即通过 一些关键词,在全书中检索出与之相关的部分; 这种思想也被应用于数据库技术中,即对数据 库中需要经常进行检索的域建立索引结构,从 而实现快速查询.
因此,在维护倒排文件时,一般不进行更新 操作,而是使用删除+插入操作代替
插入操作的维护
在已有的倒排文件中插入一篇文档相当于在该文档包含的单词所对 应的记录表后面插入此文档的编号或者每个单词的位置信息 对于一般的文当,这种插入需要调用获取记录表并在其末尾添加该 文档或者单词位置信息的操作多次,以目前的硬件水平,这种操作 需要较长的时间。 如果使用批量插入,效率将大大的提高 类似归并操作,首先为待插入的多个文档建立临时内存索引结构, 然后一次性地将此索引结构插入到原索引中; 在生成批的时候新插入的文档不能马上被检索,会造成索引内容 滞后的问题,可以通过对临时内存索引进行检索解决 除使用批量插入方法外,还可以在新文档中包含单词被用户检索的时 候进行该单词词表的更新,或者使用后台进程在机器空闲的时候进行 插入操作; 效率都不如批量插入效率高
解决方法:仅记录相邻文档编号或词位置之间 的差异
Word positions
database
D345, 25, 34, 98, 120 D348, 37, 71, 85 345, 25, 9, 64, 22 3, 37, 34, 14
database
用比较少的字节表示编号的相对变化
记录表的压缩 (2)
第五章:文本索引和搜索
任飞亮 东北大学自然语言处理实验室 2010
大纲
索引和搜索的概念 倒排文件索引 后缀数组索引 签名文件索引 文本搜索技术
大纲
索引和搜索的概念 倒排文件索引 后缀数组索引 签名文件索引 文本搜索技术
应用索引的例子
检索的目的是为了在一大堆的信息中发 现自己感兴趣的信息; 但是,当有了一大堆资料之后,并不能立即 开始搜索. 为什么?
基于归并的方法
输入:文档集合 输出:基于文档集合的倒排文件 算法: (1) 初始生成一个基于内存的临时索引结构,其中词汇表和 记录表均使用动态数据结构存储,如动态数组,链表等。 (2) 读取一个文档,并在其中出现的单词的记录表中,加入 文档编号。直到占用的内存大小超过一定的阈值。 (3) 将生成的包括词汇表和其记录表的临时索引结构转存到 磁盘,并清空内存。 (4) 如果所有文档处理完毕,则转到(5),否则转到(1)。 (5) 归并以上生成的子索引,生成单一索引。
基于内存的方法 基于排序的方法 基于归并的方法
基于内存的方法
输入:文档集合 输出:基于文档集合的倒排文件 算法: (1) 初始遍历文档集合。对于每一个单词w,统计包含该 单词的文档数fw; (2) 在内存中建立长度为 ∑ w∈词表 fw 的数组,并且对于 每一个单词w,生成指向其记录表块首的指针pw。 (3) 第二次遍历文档集合,对每个文档d中的每一个单词 w,在pw中追加文档d的序号,pw后移。
基于归并的方法
优点:
适用于各种大小的文档集合,即使对于内存 不大的机器也同样有效和实用; 该方法仅需一次扫描和分析文档,效率较高。
倒排索引主要内容
倒排索引简介 倒排文件的使用 倒排文件的建立 倒排文件的维护 倒排文件的压缩 倒排文件的性能分析 词汇表的存取
倒排文件的维护
解决方法
潜在的代价是将会带来大量的磁盘开销,有时甚至要花费 比第二步更多的时间。 该方法将用<单词,文档编号>二元组构成数组或文件, 从由原来的按照文档编号排序,变为由单词排序,然后产 生最终的倒排文件。
方法二:基于排序的方法;
基于排序的方法
•通过使用多路归并算法,排序过程可以在硬盘上完成 •另外一个好处是不必在内存中存储整个词表,从而大大增加了在单台机器上索 引的数据量
记录表操作
如果查询中仅包含一个单词,则在词汇 表中找到该单词,并取出其对应的记录 表即完成了检索操作 如果查询中包含多个单词,则需将各个 单词检索出的记录表进行合并
同步遍历记录表,实现合并过程
倒排索引主要内容
倒排索引简介 倒排文件的使用 倒排文件的建立 倒排文件的维护 倒排文件的压缩 倒排文件的性能分析 词汇表的存取
图书馆实例
在检索前必须建立索引!
索引的定义
所谓建立索引,是指将待搜索的信息进行一 定的分析,并将分析的结果按照一定的组织 方式存储起来,通常是存储在文件中. 存储了分析结果的文件的集合就是所谓的 索引. 准确定义:索引(Index)是一种数据结构, 其将关键词与包含该关键词的文档(或关 键词在文档中的位置)建立了一种映射关 系,以加快检索的速度。
删除操作
文档的删除操作与插入操作类似,其瓶颈也是记 录表从磁盘读取和写回的过程; 也可使用批量删除的方法 为了保持删除的及时性,需要维护一张删除文件 列表
在检索时如果结果包含列表中的文件,则将其从结 果中删除
总之,在维护倒排文件的时候,无率是插入操作 还是删除操作,为了提高效率,必须想办法减少 读写磁盘的操作,即提高磁盘I/O的效率
词汇表(vocabulary)+记录表(posting list) 词汇表
文档或文档集合中所包含的所有不同单词的集合 占用的空间V=cnβ,c是常数,n是文档集合的大小,β是一个0到1 之间的常数,一般在0.4到0.6之间
记录表
对于词汇表中的每一个单词在文档中出现的位置或者其出现的文 档编号构成的列表 占用的空间P=cn,其中c是常数,随着记录表中存储的信息丰富 程度而变化 记录表既可以存储文本中单词的编号位置,也可以指向单词首字 母的字符位置,还可以是其所在的文档编号,即可以根据不同的 应用需求,使用不同的寻址粒度(addressing granularity)
倒排索引简介 倒排文件的使用 倒排文件的建立 倒排文件的维护 倒排文件的压缩 倒排文件的性能分析 词汇表的存取
倒排索引主要内容
倒排索引简介 倒排文件的使用 倒排文件的建立 倒排文件的维护 倒排文件的压缩 倒排文件的性能分析 词汇表的存取
倒排文件简介
倒排文件 (Inverted File)
1、降代了索引在内存和磁盘中占用的空间, 经过适当的压缩,索引的大小可以降为原始文 档的25%左右; 2、由于索引被压缩,提高了磁盘的传输效率, 使得查询的速度加快; 3、由于磁盘传输效率的提高,使得索引的构 造和维护的效率也得到提高; 4、另外一个隐含的好处是,这样提高了倒排 文件的缓存能力;进而提高了检索的速度
基于内存的方法
核心思想是经过两次遍历
第一次遍历首先获得每个单词出现的文档的个数, 从而获得所需内存的大小; 第二次遍历充分利用内存的随机访问功能,快速更 新每个单词的记录表; 只要内存比最终生成的倒排文件(包括词汇表和记 录表)大一些,该算法是可行的; 可以很方便地扩展该方法,在记录表中增加更多的 信息,如单词的位置等;
在压缩倒排文件的同时,其原始信息完全被保留,不会缺损。 分词汇表的压缩和记录表的压缩
无损压缩
词汇表的压缩
在检索的时候,需要经常查询词汇表, 在理想情况下,应将词汇表始终置于内 存之中。 实际情况:
随着文档数的增多,词汇表也将逐渐增大; 存在一些对内存使用有限制的应用 必须对词汇表进行压缩;
压缩常用方法:
使用一个长字符串连续存储词汇表 见下页图
词汇表的压缩
使用长字符串连续存储单词表
这样的存储方式紧凑,且不会出现溢出问题; 通过该种简单的压缩方式,可以很容易地将词汇表压缩 为原来大小的50%左右
记录表的压缩
文档和单词的位置使用16位或32位整数表示
16位太小,32位太大,浪费空间
倒排文件的建立
建立倒排文件的最关键问题是由于需要 索引的文档数量过大,有可能导致不能 在内存中存储整个倒排文件。 根据索引文档的大小,介绍三种倒排文 件的建立方法。
基于内存的方法 基于排序的方法 基于归并的方法
基于归并的方法
提出背景
随着文档集合的增加,将所有词汇表置于内 存中的花费也越来越大 必须一部分一部分地生成索引,其中每一部 分索引都可使用上面的方法生成; 最后,将各个子索引进行归并,形成最终的 索引。
文本搜索的概念
不使用任何索引技术,而快速的在给定 文本或文本集合中查找是否出现某一关 键词,这种技术通常被称为单模式匹配 应用领域
信息过滤、检索结果后处理等 BF KMP BM
常用算法
大纲
索引和搜索的概念 倒排文件索引 后缀数组索引 签名文件索引 文本搜索技术
倒排索引主要内容
倒排文件的建立
建立倒排文件的最关键问题是由于需要 索引的文档数量过大,有可能导致不能 在内存中存储整个倒排文件。 根据索引文档的大小,介绍三种倒排文 件的建立方法。
基于内存的方法 基于排序的方法 基于归并的方法
倒排文件的建立
建立倒排文件的最关键问题是由于需要 索引的文档数量过大,有可能导致不能 在内存中存储整个倒排文件。 根据索引文档的大小,介绍三种倒排文 件的建立方法。
在关系数据库上建索引
姓名 地址
哈尔滨工业大学
姓名索引
张三
张三
查询式: 姓名 = “张三”
Байду номын сангаас
如上图所示,对”姓名”字段使用便于查找的数 据结构(如排序数组、B树或散列等)建立索引, 当查询某个名字时,就不需要从头至尾遍历整 个字段,而可以快速找到该姓名,从而查找出 与其对应的信息。
倒排文件组成
整数的定长表示不是特别的节省空间
对于常用词相对变化不多,使用16位编码, 浪费空间 对于非常用词,有可能仅存在于少数的文档 之中,16位表示会溢出 基本原理
解决方案:变长整数表示
使用较少位数表示较小,出现次数较多的整数 使用较多位数表示较大,出现次数较少的整数
倒排表压缩总结
优点:
对单文档的倒排文件
对文档集合的倒排文件
倒排索引主要内容
倒排索引简介 倒排文件的使用 倒排文件的建立 倒排文件的维护 倒排文件的压缩 倒排文件的性能分析 词汇表的存取
倒排文件的使用
三个步骤
词汇表检索
将出现在查询(Query)中的单词分离出来,并在词 汇表中进行检索。 检索出所有找到的单词对应的记录表。