下拉神器是一款专业的下拉词平台,为用户提供各种下拉功能:百度下拉丶360搜索下拉丶必应搜索下拉丶哔哩哔哩下拉丶抖音下拉等等,里面还有批量做词教程技术,可以一次性做10-50个词,省心高效!不用一个一个做了,而且批量做词,批量出词,可以实现霸屏效果! 有的客户想删除下拉,但是百度不受理,就可以使用批量做词,霸屏技术,实现把那些负面信息顶下去,顶掉的效果=删除效果!欢迎您前来使用!新手不懂使用,请多看2遍视频教程哦!下拉神器100%有效果的! 给大家看一个下拉神器介绍的视频,看完后,直接打开64xl.com进入下拉神器 看完上面视频,相信大家对下拉神器有初步的了解,欢迎使用下拉神器,下拉行业老品牌,如果下拉神器都不好使,整个行业其他平台一样不好使,但是大家一定要多学习多看教程,先学会做词出词的技巧!看完后,直接打开64xl.com进入下拉神器 下一篇文章内容预览:
所以倒排列表还需要保存以下信息
留存下来的信息就变成了一个二进制对,比如第 16 个单词“网站”的 (5:1),其中 5 代表文档编号,1 代表出现的次数。也就是说,有了这个信息,如果某个单词在文档中出现的频率更高(简称 TF),搜索引擎就可以将其排名靠前,并推送给你。
除了频率,还有位置。例如,“”是文档 1 中出现一次的单词,并且是第一个单词,表示为
此时您可能不记得您拥有哪些网页,因此请再次检查并进行比较。
这样搜索引擎就能根据你的关键词在倒排表中找出包含这个关键词的文档集合,然后根据该关键词在文档集合中每篇文档中出现的频率和位置,将排好序的文档返回给你。
上面的句子比较长,粗体部分连在一起读的话,不会有什么变化。
其实很多搜索引擎基本都是这么做的,只是各自有其他的参考标准,比如百度也会参考热度,你的搜索历史,网站给的钱(你知道)等来给出综合评分,并按照评分高低的顺序返回搜索结果。
以上所有的记录都会在处理之后存放到磁盘中,当你的关键字到来的时候再加载到内存中。
假设全世界只有5篇文档,那么上面这些就够了。但实际上全世界的文档有几十亿篇。这时候问题的性质就变了,不是能不能找到的问题,而是如何更快更准的找到的问题。这就需要算法,也就是我们上面说的那种计算。

某种计算
第一个问题是,词汇那么多,当你输入“”的时候,百度怎么把你的关键词和它内部倒排列表中的“”这个词联系起来呢?
计算机不识别“”,这里可以通过hash方法把“”转换成数字。
所谓哈希,就是通过一定的算法,将单词映射为符号。比如“将单词转换为其长度”,就是一种算法。虽然很底层,“”是2,“pear”是1。不同的哈希算法转换结果不同,但必然会出现一个现象——哈希碰撞。比如“”也是2。这时候就需要用到链表,又称冲突表,将数字相同的单词链接在一起。
当我们搜索“苹果”的时候,经过哈希计算,我们知道它的编号是2,然后发现2中有一个链表,里面可能存放着“苹果”,“桃子”,“蘑菇”等等,然后我们遍历这个链表找到苹果。
这里的思路和是一样的,但是链表会太长,所以可以用其他数据结构代替,比如红黑树,b树等等。
解决了第一个问题之后,我们可以通过关键字获取它的ID,进而得到我们建立的倒排列表,比如“”
第二个问题是由于文档数量较多,我们获取到的文档的编号往往有很多位百度关键词准吗,而不是像上图那样的 1,2,3,4,5,这导致倒排表不必要的膨胀。所以我们这里做了一点区别。

它是末尾的文档编号减去前一个文档编号,然后在获取文档(从磁盘读取)时将其加回去。
第三个问题是如何从磁盘读取文档
现在我们有一个倒排列表
有两种方法可以从磁盘读取文档:
两遍法
第一遍,扫描文档集合,得到文档数量N,文档集合中包含的不同单词数量M,每个单词出现的频率DF(如下图),还有一些其他必要的信息。把这些东西占用的内存加起来,就可以得到需要开辟的内存空间。
同时,这个空间被划分为单词。例如,“”这个词有5个文档。
第一遍主要是确定开辟多大的内存空间来显示这个文档,第二遍就是扫描边缘,匹配对应的文档编号(三元组中的第一个数字),然后加载到内存中。
但是这种方法有一个问题,就是文档集合的大小就是内存的大小,所以很有可能出现内存溢出的情况。不过把所有东西都放到内存中也是很快的,这是一种用空间换取时间的方法。

相信你已经发现,每当说到阅读,一定有两个以上的方法,一个是空间优先,一个是时间优先,第二个是时间换空间——排序法
排序方法
现在我们只使用固定大小的内存,那如何从上图的倒排表中知道每个单词对应的文章集合需要多少内存空间呢?
我们需要对文档进行解析,构造(单词ID,文档ID,词频)三元组,然后按照单词ID,文档ID,词频进行排序。最后如果指定的内存已满,则将这些三元组全部写入临时文件A。
为什么要这么做呢?想一想,如果我们最终得到一个(单词A,文档A,词频),我们很容易就知道某个单词对应哪个文档,以及对应的频率。
也就是说,一个三元组告诉我们单词A对应文档A,另一个三元组告诉我们单词A对应文档B……当这些三元组加在一起,我们就知道单词A对应的文档集合,也就能够知道需要多少内存空间来填充这些文档。
解析完50个文档之后,指定的内存可能就满了,然后把这些三元组写入磁盘上的临时文件A,然后就可以读取接下来的50个文档了。注意,字典是不断增大的,比如前50个文档只有上述7个词,而接下来的50个文档可能还有其他词,这时候就需要将它们插入到字典中了。字典是一直存在于内存中的。
这样,你就可以只使用固定的内存,把所有的文档以 50 个为一批进行解析,逐个写入临时文件 A,B,C,D,然后对这些临时文件进行合并,也就是分别读入内存中的缓冲区,合成最终的索引写入磁盘。这样,你可以通过最终的索引知道哪些词对应多少个文档以及频率是多少,然后根据这些开辟内存空间读入内存返回给你。
排序的方法说起来复杂,其实理解起来很简单,只要你耐心看完就一定能明白。
由于篇幅有限,这里我们只说了从你输入关键词到它返回一个粗略的网页的过程。实际上,百度是如何抓取网页的?如何保证网页的时效性?如何过滤垃圾网站?如何分布式存储海量网页?如何处理超长关键词查询?如何根据用户历史记录精准分析用户意图?这些都需要很大的篇幅来详细阐述,一篇文章不可能讲完,下次有机会再分析。