为什么在搜索引擎中将词汇表和发布列表分开

数据挖掘 信息检索 搜索 索引
2021-10-05 20:36:40

我正在上信息检索课程。我们了解到搜索引擎的索引具有(可能除其他外):

  1. 将术语映射到其统计信息(频率、类型……)和
  2. 将术语映射到存储的文档的过帐列表(有或没有职位,字段,...)

这些是单独的数据结构。我明白为什么需要这些信息以及为什么需要这些信息。但我不明白为什么我们要把它们分开。为什么我们不能有一种将术语映射到统计数据和文档的数据结构?

我目前认为这可能是因为词汇量会小得多,我们可以从记忆中读取它。因此,我们可以使用统计信息来删除某些可能没有用的查询词,或者尝试在查询中查找拼写错误,而无需触及庞大的发布列表。

这是正确的还是有其他理由将词汇表和发布列表分开?

1个回答

它有很多原因(性能、设计、存储、压缩、数据结构评估)。主要原因是所有的结构都在实践中得到验证,但你可以制作自己的数据结构并展示一种新的模式来做。

甚至 google 也有一篇论文来验证他的工作是否正常,如果你有自己的数据结构和设计,我建议你为你的实验选择一个大小正确的数据库,为你自己的集合搜索精度和召回值并制作它。

您可以看到的其他原因是信息对性能、压缩、存储和硬件有不同的要求。

RAM 和 HD 之间的主内存千兆字节成本差异很大,当您拥有大量服务器时,您降低成本的策略是提高低成本存储和没有高硬件要求的原因。

当您拥有包含数 TB 数据、多种文化或许多国家的集合时,这一点很清楚。(谷歌有一篇关于他的集群的论文)。

简单的想,一个50GB的集合是一个小集合,但是60GB RAM的服务器要多少钱,50GB HD的服务器要多少钱?

答案很清楚,它反映在数据结构中(B-tree 适用于辅助内存,简单的 hastables 在主内存中又好又快)。

但你决定。

一个很好的参考是管理千兆字节的第 5 章(https://www.amazon.com/Managing-Gigabytes-Compressing-Multimedia-Information/dp/1558605703/ref=sr_1_1?s=books&ie=UTF8&qid=1474990622&sr=1- 1&keywords=管理+千兆字节)

本章显示了一个表格,其中包含许多数据结构和内存类型的不同结果。

谷歌的论文显示了验证您的实现和设计的模式:http: //infolab.stanford.edu/~backrub/google.html

想想集群和工作: http ://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/43438.pdf