詹惠儿

2018-11-29   阅读量: 628

数据分析师 Python数据分析 Python爬虫 Python编程

什么是分发索引?

扫码加入数据分析学习群

我们现在考虑在支持查询的大型计算机集群中分发索引。两个明显的替代索引实现表明自己: 按术语划分,也称为全局索引组织,和 按文档划分,也称为本地索引组织。在前者中,索引术语字典被划分为子集,每个子​​集驻留在节点处。除了节点上的条款,我们还会保留这些条款的发布。查询被路由到与其查询项对应的节点。原则上,这允许更大的并发性,因为具有不同查询项的查询流将命中不同的机器组。

实际上,按词汇术语对分区索引进行分区是非常重要的。多字查询需要在节点集之间发送长发布列表以进行合并,并且这样做的成本可能超过更大的并发性。对分区进行负载均衡不是通过对相对项频率的先验分析来控制,而是通过查询项及其共现的分布来控制,这些分布可随时间漂移或表现出突然的突发。实现良好的分区是查询术语共现的一个功能,需要聚合术语以优化不易量化的目标。最后,这种策略使得动态索引的实现更加困难。

更常见的实现是按文档分区:每个节点包含所有文档子集的索引。每个查询都分发到所有节点,各个节点的结果在呈现给用户之前被合并。该策略用于更少的本地磁盘搜索,以减少节点间通信。这种方法的一个难点是,必须在整个文档集合中计算用于评分的全局统计信息(例如idf),即使任何单个节点上的索引仅包含文档的子集。这些是通过分布式“背景”进程计算的,这些进程使用新的全局统计信息定期刷新节点索引。

我们如何决定文档到节点的分区?根据对爬虫体系结构的开发,一种简单的方法是将所有页面从主机分配到单个节点。此分区可以遵循主机到爬网程序节点的分区。这种划分的危险在于,在许多查询中,结果的优势将来自少量主机(因此少量索引节点)的文档。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子