分词与索引库

分词是很多做SEO的人常听到的概念,为了让大家在这个方面不会有疑惑,现在要来讲一下分词以及索引库。这也是更深入的了解搜索引擎的开始。

搜索引擎每天都是在处理一个基本的需求:用户搜索一个关键词,搜索引擎马上找到相关的网页给用户。这个过程要怎么实现呢? 下面就分步来了解这个过程。

首先搜索引擎要尽可能多的把互联网上的网页搜集下来,这样能提供大量的网页给用户查询。这一部分由爬虫来解决,顺着互联网上的链接一个个往下抓取。最后就有了一堆记录着网页各种信息的资料库。目前的现状,最后能使这个资料库里有大概100多亿个网页。资料库里记录了这些网页的URL,整个网页的HTML代码,网页标题等等信息。

然后,搜索引擎拿到用户输入的这个关键词后,要从这个资料库里把相关的网页找出来给用户。这里就碰到好几个问题了:

1,要怎么快速的从上100亿个网页里找出匹配的网页的呢?

要知道这是从上百亿的网页里找符合这个关键词内容的网页,如果像用word里那种用ctrl + F 轮询的查找方式的话,即使用超级计算机,也不知道要消耗多少时间。但是现在的搜索引擎,在几分之一秒里就实现了。所以一定是做了一些处理才实现的。

解决办法也倒简单,就是建立一份索引库。就像我们查《新华字典》一样,我们不会翻遍《新华字典》的每一页来查那个字在哪页,而是先去索引表那里找这个字,拿到页码后,直接翻到那页就可以了。搜索引擎也会为上百亿的网页建立一个索引库,用户查询信息的时候,是先到搜索引库里查一下要找的信息在哪些网页,然后就引导你去那些网页的。

如下图:

索引库

索引库

2,索引库里用什么样的分类方式?

我们知道,《新华字典》的索引表是用字母列表或者偏旁部首的分类方式的。那么搜索引擎的索引库里是怎么分类的?是不是也可以用字母列表的方式?

搜索引擎如果以字母列表的方式排列索引库,那么平均每个字母下要查询的网页数量是  100亿÷26=3.85亿 ,也还是一个很大的数字。而且搜索引擎上,今天是100亿个网页,过不了多久就是300亿个网页了。

最后,终于找到一个解决办法:索引库里用词语来分类。

因为尽管互联网上的网页是不断激增的,但是每一种语言里,词语的数量都是相对固定的。比如英语就是一百多万个单词,100亿 ÷ 1百万 =  1 万;汉语是8万多个词语,100亿÷8万=12万5千。都是计算机很容易处理得过来的。

用词语来分类还有一个好处,就是可以匹配用户查询的那个词语。本来用户就是要查这个词语的,那我就按这个词语去分类就是。

所以,搜索引擎的索引库,最后就是这个样子的:

模拟的索引库

模拟的索引库

理论上,当用户输入关键词“mp3 player”搜索时,搜索引擎就从 “mp3”那行 和 “player”那行里拿出同时都有的、交集的url来即可。

上图也是现在英文版的google.com上的真实排名情况,可以看到 www.winamp.com 这个网站在搜索“mp3”的时候排第4位,在搜索“player”的时候也排第4位。当搜索“mp3 player”的时候,因为没有其他网站比它更匹配这个词语,所以它排在了第一位。

排第一

排在第一

当搜索引擎把一个网站抓取下来后,接着要做的事情就是把网页里的词语分开放到索引库里。分词在这个时候就要应用到了,所谓的分词,其实很简单,就是把词语分开而已。

英语的分词好处理一点,因为英语的每个单词之间是用空格分开的,基本上就只要处理一些虚词、介词,还有一些词语的单复数,变形词等等。但是中文的分词就复杂很多了,句子中的每个字都连在一起,有时候即使是人来判断,都还有产生歧义的时候。中文的分词有很多方法,也很容易弄懂的,如正向切分法,逆向切分法等等,网上有很多相关的资料。

谷歌的中文分词方法是从国外一家第三方公司买的。百度的分词方法是自己创立的,可能在词库上面比谷歌有点优势。不过其他方面差了一些。

当爬虫找到一个网页的时候,在搜索引擎看来,这个网页就是一大堆词语的组合。基本流程如下:

搜索引擎的处理过程

搜索引擎的处理过程

看完这个流程图,应该能给大家在做内部优化的时候有所启发的。

我建议大家再去看一下《把Web标准化进行得更彻底一点》这篇文章,还有《丰富网页摘要”,让你的网站与众不同》以及《SEO案例:锚文本、关键字、nofollow、Web标准化(一)》和 《SEO案例:锚文本、关键字、nofollow、Web标准化(二)》。那些文章和这篇文章一样,都是在讲同一个问题。

一定要站在搜索引擎的角度,把它的这些原理了解清楚了,才会让你明白哪些因素才是你应该关注的重点。

有人说: SEO就是重在细节。这应该是经验之谈。但是不知道大家有没有想过的是:是不是可能原本这些看似细节的东西,其实就是应该注意的重要的东西呢?如果你不能控制好你的排名,有没有想过可能你以前特别在意的一些SEO因素,其实有些并不是重点?;而只是你把影响排名的部分因素弄错了?

上面的很多知识,其实在《搜索引擎营销:网站流量大提速》里都有提及的。那本书要去精读的原因之一就是它讲了很多看似很普通的原理,但是都是有用的。

比如在选关键词的时候,也可以参考一下这个词语的索引量。从上面的原理可以看出,这个索引量反应了这个词语在这种语言当中人们使用的流行程度。所以国外有些计算关键词KEI指数的公式里,也把这个关键词的索引量加入了进来。

有兴趣再追溯下去的朋友可以看看google黑板报上的这篇文章
http://www.googlechinablog.com/2006/05/blog-post_10.html 

下篇文章谈一下google 咖啡因 到底更新了什么。



53 Responses to “ 分词与索引库 ”

  1. mice 说:

    哦也 沙发我的.哇哈哈~~~

  2. alex 说:

    文章都很特别,视角很独特。 完全是从经验出发的,不同于别的SEO的生硬描述。 很有启发

  3. 战略seo 说:

    爱死你了!

  4. shipping 说:

    说实话,没看懂。过几天再来看第二遍,期待下一篇,咖啡因。

  5. 尘缘 说:

    国平加油好样的~!
    希望你能保持2 3天一篇文章~!
    看你的文章很过瘾~!觉得实用~!

  6. 阿汇 说:

    真是好东西。呵呵。
    准备买那个 大提速~

  7. 888 说:

    深入浅出,像这么好的文章太少见了,希望国平老师多讲一些,偶是天天等着看呢:)

  8. 好专业,我也在关注这个,不过我打算写简单点给新手看

  9. 过后 说:

    国平老师对Google的研究深刻,博客的前几篇文章也值得细细品味,高

  10. cherry 说:

    写得很全面,虽然在其它地方也看过分词方面的文章,但这个把前因后果都讲到了~~~~ 这些经验用在实际的优化中,效果很明显。

  11. 核桃 说:

    呵呵,分词的东西是比较容易理解的,接下来希望能多看到谈索引库之类的东西,这方面要深入下去不是一两天能达成的,所以希望以后多看到这方面的文章。

  12. mars 说:

    写的透彻,拜读了。
    之前我认为google 是以词组也是“MP4 player”来做分类索引标签的,看来我是错了。

    不过google的索引库会不会更详细呢?
    比如记录该词在页面出现的位置, 出现的次数 , 还有其他??

  13. 啊聊 说:

    又有新文章了,看作者的文章,简直就是一种享受啊

  14. 至尊宝狼 说:

    冒昧的提一个问题,
    按照你上图的索引库,当用户搜索一个词,比如“mp3″,然后索引后面跟的无论是url,或是title,或是描述都一定会有”mp3″这个词,因为我想因为有包含这次词了才能进索引库。
    但是如果不包含”mp3″这个词,那网站又是怎么进入这个索引库的呢?比如在百度里搜”mp3″,排名18的“SoGua 搜刮第一音乐娱乐门户”,标题,描述,地址都不包含’mp3′,那他是怎么进索引库的呢?难道是因为相关性?或是说索引库里还收录外部链接的描述?
    谢谢

  15. sysmu 说:

    全文花了半小时读完,说的很明白。对搜索引擎怎么呈现给用户结果的方式又了解一步了。

  16. WOW 说:

    分析很專業,學習 謝謝格主

  17. posuiji 说:

    读完之后想了好久,向搜索引挚的思维转变已经转了二十度了。期待后续精彩

  18. lowkey 说:

    这个看懂虽然不难,但是真的面对分词的时候还是很有难度。

  19. ccss 说:

    哈哈,终于买到一本网络流量大提速了,淘宝上99%都没了

    • simba 说:

      是啊,我也想买,但是买不到,都没有库存了。推荐一下,在哪个卖家处买到的呢?

  20. 天下奇斌 说:

    再次拜读!写得太好了!

  21. 幸福深处 说:

    博主的文章写的很不错,不同于一般的seo博客,能站在搜索引擎的角度来做优化,而不是从人的角度来做优化。

  22. 我@soho 说:

    但是每一种语言里,词语的数量都是相对固定的。比如英语就是一百多万个单词,100亿 ÷ 1百万 = 1 万;汉语是8万多个词语,100亿÷8万=12万5千。都是计算机很容易处理得过来的。

    虽然100亿网页对应一百万个词,但单一网页对应很多个词,会被放入很多歌索引库。
    就算搜素引擎建立了一万个最基本的索引库,可在单个索引库中可能就有几十亿个网页,比如the这个最基本的英文单词,他同样存在在庞大数据库中查找数据的问题。
    二次索引?不过单个词又是如何进行二次索引啊?

  23. 百科全书 说:

    学到了。。讲解得很详细

  24. Nick 说:

    有点复杂,,有点不明白
    继续摸索

  25. 星月 说:

    恩,温故而知新!谢谢分享,很详细了!

  26. davis_sky 说:

    新來報道。繼續關注

  27. 很赞的文章,尤其是那个流程图印证了我的一些想法

  28. winseo 说:

    流程图很清晰的让人理解了整个过程。好文。

  29. [...] 可以看到,爬虫、索引库、排序规则,无一不需要数据中心的速度更快。所以我在《分词与索引库》中说:google的数据中心,才是它的核心竞争力之一。google 也把速度快归结为自己成功的原因。 [...]

  30. 镇元子 说:

    谷歌的中文分词早期是使用的第三方公司
    现在用的是自己的
    http://www.googlechinablog.com/2006/04/blog-post_10.html

  31. 安庆论坛 说:

    写得非常好,详细,学到很多东西了!

  32. guojian 说:

    知道分次的前因后果啦。学到很多东西了!

  33. 路文 说:

    。为了网页排名方便,索引中还需存有大量附加信息,诸如每个词出现的位置、次数等等。

  34. hliangxiong 说:

    非常有感触!

  35. lieliu 说:

    如果真的和你说的一样,那么着将是一个很严重的漏洞

  36. LV 说:

    学习学习啊

  37. 动静设计 说:

    分词的重要还是很大的,感觉分析很好,受益了

  38. [...] 看过《分词与索引库》这篇文章,应该要明白的是:即使那个关键词在页面中只出现了一次,搜索这个关键词还是有机会让这个页面出现在搜索结果里的。假设当用户输入的长尾关键词中有4个词语,你的网页上所有的4个词语都有了,那理论上来说,应该是你的这个网页排到前面才是。但现状是很多这样的网页被埋在很深的地方。因为搜索引擎不光要看你网页上是不是有这个关键词,还要看这些词在什么地方出现。 [...]

  39. 德州扑克 说:

    太重要了这文章。

  40. qianwangli 说:

    一天要到这里来几次,受益匪浅,这篇文章让我顿时开窍,只是还有点不是很清楚,如果用户搜索“a34gd43as” 这样的词语,它既不是英文词语 又不是中文词语 这个是怎么索引的呢 请赐教

  41. song 说:

    受益良多啊,在博主的博客上。博客主人分享精神太让人敬佩了。

  42. song 说:

    国平,在没有读过你这篇文章之前,我也是这样猜想的,但有一个疑点让我一直无法确定这个猜想:如果我去搜索一个SE里没有索引过的词如“guopingsemyijiayan”,这时候SE应该怎么去处理呢?不会真的去全文搜索吧。

    后来我从ZAC的一篇文章里突然有了启发(http://www.chinamyhosting.com/seoblog/2009/11/23/seo-test/),如果搜索引擎里没有索引的,一开始是没有结果的,但你搜索过这个词,SE就记录下这个词了,不管这个词是什么玩意,下次你再来搜索这个词,指不定就有结果了。因为SE下次建立索引时会考虑你搜索过的那个词。

    不知道我这样想法合理不,还请国平指点。

  43. 9494hot.cn 说:

    多看多听,而后总结

    我天天在成长

  44. stephen 说:

    就凭知道google中国的 中文分词是找第3方的国外公司买的 就对作者的专业佩服无以复加 关于索引 讲的也不错 是一个非常专业的人 关于词组就是分词的的交际结果 这点 受益不浅 以前没想到过

  45. Recollection 说:

    这是第三次看这篇文章了,前两次没看懂、不敢留言,可以说已经是“一家之言”的常客了,基本上天天来看看有没有新内容!

  46. 紫色seo 说:

    细读二十遍,每一遍都有新的收获。谢谢分享!还在努力学习。希望有机会能得到您的指导。互联网-我的梦想起飞的地方。

Leave a Reply