时间:2022-11-06 16:30:01 | 来源:信息时代
时间:2022-11-06 16:30:01 来源:信息时代
签名文件 : 文本数据库的一种索引结构,它能够有效地支持布尔查询。数据库中的每个文档,在签名文件中都有相应的一条记录,称作文档的签名记录。每个签名的固定长度为b位,b称作签名长度。签名的位数目是按照文档中包含的单词来设置的。利用Hash函数把文档中出现的单词映射到特定的签名位,并设置相应位。注意,除非词表中的所有单词都有自己的签名位,否则文档的某个签名位可能被多次设置,因为Hash函数可能把多个单词映射到相同的位。对于由条件合取组成的查询,首先利用Hash函数作用于查询中的每一个词生成查询的签名。然后,扫描签名文件,检索所有与查询签名相匹配的文档。由于文档的签名并不唯一指定文档中包含的单词,所以还需要进一步检查这些文档中是否实际包含需要检索的单词。我们称文档的签名与查询签名相匹配,但文档中不包含检索项这种情况为伪正确(false positive)。伪正确这种错误的开销很大,因为需要从磁盘中读出该文档,进行语法分析,切除后缀,最后对检索项进行检查。对于由条件析取组成的查询,首先生成一系列的查询签名,某个签名由一个查询单词生成。然后扫描签名文件,检索那些签名与任意一个查询相匹配的文档。注意对于每个查询,都需要扫描整个签名文件,签名文件中的记录个数与数据库中的文档数目相同。为了减少每次查询需要读取的数据,可以垂直地将签名文件划分为若干位段,这样的索引称作位段签名文件。每个位段的长度仍然与数据库中的文档数目相等,但对于只有q个签名位的查询,只需要读取q个位段。