`
oywl2008
  • 浏览: 1053409 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

第二十四章、经典算法十一Hash表算法(续)、倒排索引关键词

 
阅读更多

第二十四章、经典算法十一Hash表算法(续)、倒排索引关键词不重复Hash编码 

    本章要介绍这样一个问题,对倒排索引中的关键词进行编码。那么,这个问题将分为两个个步骤:

  1. 首先,要提取倒排索引内词典文件中的关键词;
  2. 对提取出来的关键词进行编码。本章采取hash编码的方式。既然要用hash编码,那么最重要的就是要解决hash冲突的问题,下文会详细介绍。
    有一点必须提醒读者的是,倒排索引包含词典和倒排记录表两个部分,词典一般有词项(或称为关键词)和词项频率(即这个词项或关键词出现的次数),倒排记录表则记录着上述词项(或关键词)所出现的位置,或出现的文档及网页ID等相关信息。

 

24.1、正排索引与倒排索引  

    咱们先来看什么是倒排索引,以及倒排索引与正排索引之间的区别:

    我们知道,搜索引擎的关键步骤就是建立倒排索引,所谓倒排索引一般表示为一个关键词,然后是它的频度(出现的次数),位置(出现在哪一篇文章或网页中,及有关的日期,作者等信息),它相当于为互联网上几千亿页网页做了一个索引,好比一本书的目录、标签一般。读者想看哪一个主题相关的章节,直接根据目录即可找到相关的页面。不必再从书的第一页到最后一页,一页一页的查找。

 

    接下来,阐述下正排索引与倒排索引的区别:

 

一般索引(正排索引)     

    正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。正排表结构如图1所示,这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档假如,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对因的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。      

    尽管正排表的工作原理非常的简单,但是由于其检索效率太低,除非在特定情况下,否则实用性价值不大。 

倒排索引

    倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。由于每个字或词对应的文档数量在动态变化,所以倒排表的建立和维护都较为复杂,但是在查询的时候由于可以一次得到查询关键字所对应的所有文档,所以效率高于正排表。在全文检索中,检索的快速响应是一个最为关键的性能,而索引建立由于在后台进行,尽管效率相对低一些,但不会影响整个搜索引擎的效率。

    倒排表的结构图如图2: 


    倒排表的索引信息保存的是字或词后继数组模型、互关联后继数组模型条在文档内的位置,在同一篇文档内相邻的字或词条的前后关系没有被保存到索引文件内。

 

24.2、倒排索引中提取关键词

    倒排索引是搜索引擎之基石。建成了倒排索引后,用户要查找某个query,如在搜索框输入某个关键词:“结构之法”后,搜索引擎不会再次使用爬虫又一个一个去抓取每一个网页,从上到下扫描网页,看这个网页有没有出现这个关键词,而是会在它预先生成的倒排索引文件中查找和匹配包含这个关键词“结构之法”的所有网页。找到了之后,再按相关性度排序,最终把排序后的结果显示给用户。

    如下,即是一个倒排索引文件(不全),我们把它取名为big_index,文件中每一较短的,不包含有“#####”符号的便是某个关键词,及这个关键词的出现次数。现在要从这个大索引文件中提取出这些关键词,--Firelf--,-11,-Winter-,.,007,007:天降杀机,02Chan..如何做到呢?一行一行的扫描整个索引文件么?

    何意?之前已经说过:倒排索引包含词典和倒排记录表两个部分,词典一般有词项(或称为关键词)和词项频率(即这个词项或关键词出现的次数),倒排记录表则记录着上述词项(或关键词)所出现的位置,或出现的文档及网页ID等相关信息。

 

 

http://blog.csdn.net/v_july_v/article/details/7085669

 

 

分享到:
评论

相关推荐

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)by_July-带书签目录超清文字版

    第二十一章至第二十四章可能会讨论错误处理和调试技巧,这是每个程序员都需要掌握的重要技能。理解如何通过异常处理来捕获和处理程序运行时的问题,以及如何使用调试工具来定位和修复错误,能显著提高开发效率。 ...

    十五个经典算法研究与总结、目录+索引(定稿版)

    十一(续)、倒排索引关键词Hash不重复编码实践 十二、快速排序算法 (快速排序算法3篇文章) 十二(续)、快速排序算法的深入分析 十二(再续):快速排序算法之所有版本的c/c++实现 十三、通过浙大上机复试试题学...

    算法文档,来看看吧

    [原网页] 编程艺术第二十三~四章十一续:杨氏矩阵查找,倒排索引关键词Hash编码 [原网页] 六之再续:KMP算法之总结篇(12.09修订,必懂KMP) [原网页] Nginx源码剖析之内存池,与内存管理 [原网页] 程序员编程...

    算法_三十七章集锦by_July

    10. 第二十三章和第二十四章主要讨论了杨氏矩阵查找和倒排索引关键词Hash不重复编码的实现。 11. 第二十五章对二分查找的实现进行了深入探讨,并指出这是90%的程序员都无法正确实现的算法之一。 12. 第二十六章到...

    程序员编程艺术第一~二十七章集锦与总结

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** —— 探讨了高级数据结构和搜索技术的应用。 - **第二十五章:二分查找实现** —— 详细介绍了二分查找的实现细节。 - **第二十六章:基于...

    程序员编程艺术第一 ~二十七章

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** - 涉及高级数据结构的应用,如杨氏矩阵和倒排索引。 - **第二十五章:二分查找实现** - 分析了二分查找算法的实现细节,强调其正确性的...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** - **知识点**:矩阵搜索算法、倒排索引构建。 - **应用场景**:搜索引擎、数据库索引优化等。 - **第二十五章:二分查找实现** - **...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)(by_July)定稿版

    ##### 第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践 讨论了特殊矩阵的搜索算法以及高效的文本索引构建方法。 ##### 第二十五章:二分查找实现 特别提到了二分查找的实现细节,强调了其在面试...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)(by_July)定稿版.pdf

    - **第二十三、四章**:杨氏矩阵查找、倒排索引关键词Hash不重复编码实践 - **第二十五章**:二分查找实现 - **第二十六章**:基于给定的文档生成倒排索引的编码与实践 - **第二十七章**:不改变正负数之间相对...

    程序员编程艺术

    - 第二十三章和第二十四章涉及杨氏矩阵的查找方法以及倒排索引关键词的Hash编码实践。 **11. 二分查找** - 第二十五章特别关注二分查找算法的正确实现,并指出大多数程序员在实现时常见的错误。 **12. 倒排索引...

    程序员编程艺术--共二十七章-集锦与总结(教你如何编程)

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** - 涉及特定数据结构的操作。 - 包含具体实例和代码实现。 - **第二十五章:二分查找实现** - 详细讲解二分查找的原理和实现细节。 - ...

    编程之法:面试和算法心得.pdf

    9. **倒排索引**:常用于搜索引擎中,能够快速定位包含特定关键词的文档。 10. **Simhash算法**:一种近似哈希算法,用于检测相似文本。 #### 三、STL容器基础 为了更好地理解这些方法的应用,书中还详细介绍了STL...

    海量数据处理的方法

    例如,在搜索引擎中,Bloom Filter可以用来过滤掉重复的网页,而倒排索引则用于实现高效的全文搜索;在大数据处理领域,MapReduce框架提供了强大的并行计算能力,可以有效处理PB级别的数据。通过合理组合使用这些...

    阿里巴巴面试官手册.pdf

    - **倒排索引**:一种常用的数据结构,用于提高搜索效率。 - **创建索引的过程**:包括文档分词、词元处理、索引构建等步骤。 - **搜索过程**:用户输入查询,系统进行分词处理,并在索引中查找匹配项,最后返回相关...

    C++网络爬虫项目

    “倒排索引”这种高效查询数据结构来保存,而网页之间的链接关系也会予以 保存。之所以要保存链接关系,是因为这种关系在网页相关性排序阶段是可利 用的,通过“链接分析”可以判断页面的相对重要性,对于为用户提供...

Global site tag (gtag.js) - Google Analytics