索引结构
一个数据文件可以用来存储一个关系。
一个数据文件可能拥有一个或多个索引文件,每个索引文件建立查找键和数据记录之间的关联,查找键的指针指向于查找键相同属相值得记录。
索引可以是稠密的,以数据文件中每个记录在索引文件中都设有一个索引项。
也可以是稀疏的,即数据文件中只有一些记录在索引文件中表示出来,通常为每个数据块在索引文件中设一个索引项。
索引还可以是主索引或者辅助索引。
顺序文件
顺序文件是对关系中的元祖按主键进行排序而生成的文件。
关系中的元祖按照这个次序分布在多个数据块中。
稠密索引
如果记录是排好序的,我们就可以在记录上建立稠密索引。
块中只存放记录的键以及只想记录本身的指针。稠密索引文件中的索引块保持键的顺序与文件中的排序顺序一致。
稀疏索引
稀疏索引只为数据文件的每个存储块设一个键-指针对,他比稠密索引节省了更多的存储空间,但查找给定值的记录需要更多的时间。
只有当数据文件是按照某个查找键排序时,在该键上建立的稀疏索引才能被使用,而稠密索引则可以应用任何的查找键。
多级索引
同坐在索引上再建索引,我们能够使第一级索引的使用更为有效。
辅助索引
辅助索引可以用于任何索引目的:这种数据结构有助于查找给定一个或多个字段值的记录。
桶文件中指针可以是:
指向文档本身的指针。
指向词的一个出现的指针。
桶中插入与删除
桶是单个字段(指针)的记录,且向其他任何记录集合一样存放在块中。因此在插入和删除指针时,我们可用目前位置学过的任一种技术,例如为文件的扩充预留空闲空间、溢出块和可能得块内或块间记录移动。在后一种情况下,当我们移动倒排索引和桶中指针指向的记录时,我们必须小心地改变从倒排索引到桶文件中的相应指针。
改进文档检索效率
1 抽取词干。(例如复数名词可悲当作单数形式处理)
2 无用词。(the、and通常不包含在到排索引中)
多维索引
多维索引的应用
1 部分匹配查询
2 范围查询
3最近邻查询
4 where-am-I查询
多维索引结构综述
1 类散列表方法
2 类树方法
多维数据的散列结构
网格文件
划分成网格的点空间,在每一维上网络线把空间分成条状,落在网格线上的点被认为是属于该网络线为其底边界的条。在不同的网络线的数目可以不同,并且相邻网格线之间可能有不同的区间长度,甚至在同一维的线之间也可有不同的区间长度。
网格文件的查找
空间被划分成的每一个区域可以被看成是散列表的一个桶,落入该区域的每个点的记录都存放在属于该桶的块中。如果有必要,溢出块可以用来增加桶的大小。
网格文件的插入
如果同种没有空间:
1 按需要给桶增加溢出块
2 通过增加或移动网格线在重组结构