正文

搜索引擎索引——在世界上最大的草垛中寻针(8)

改变未来的九大算法 作者:(美)约翰·麦考密克


我们称这种和索引普通单词一样索引元词的简单把戏为“元词把戏”。这个把戏也许看起来简单得可笑,但元词把戏在让搜索引擎执行精确搜索和高质量排名上扮演了至关重要的角色。举个简单例子证明。假设在某个时候,有个搜索引擎支持使用IN关键词的特殊查询,因此像boat IN TITLE这样的查询只会返回在网页标题中包含了单词“boat”的网页,而查询giraffe IN BODY则会找到在正文中包含“giraffe”(长颈鹿)的网页。请注意,绝大多数搜索引擎并不完全按照这种方法提供IN查询,但一些搜索引擎可以通过让你点击“高级搜索”选项,详细说明查询词必须出现在标题或一份文件的特定位置来实现同样的效果。我们假定IN关键词存在,以便更容易解释。事实上,在写作本书时,谷歌已经可以让用户通过使用关键词intitle进行标题搜索:因此,在谷歌中查询intitle:boat,将找到标题中带有“boat”的网页。自己试试!

让我们来看看,在上面两张图中由三个网页组成的示例里,搜索引擎如何有效地执行查询dog IN TITLE。首先,搜索引擎提取“dog”的索引项,也就是2-3、2-7和3-11。然后(这可能有点出人意料,但请忍耐片刻)搜索引擎会同时提取<titleStart>和<titleEnd>的索引项。

<titleStart>的索引项是1-1、2-1和3-1,<titleEnd>的索引项是1-4、2-4和3-4。这些提取信息全部显示在上图中,你可以忽略那些圈和框。

之后,搜索引擎开始扫描“dog”的索引项,检查其命中,看是否有哪个命中发生在标题内。“dog”的第一个命中是圈起来的项2-3,代表其是第2页的第3个词。通过一并扫描<titleStart>的项,搜索引擎就能知道第2页的标题从哪开始——即索引项的第一个数字要以“2-”开始,也就是被圈的项2-1,即第2页的标题从第1个单词处开始。同样的,搜索引擎能知道第2页的标题在哪结束。搜索引擎只要扫描索引项中的<titleEnd>,寻找以“2-”开始的索引项数字,在这个例子中就是停止在被圈的项2-4处。因此第2页的标题在第4个词处结束。

我们目前已知的所有东西都被图中圈住的项总结了。它们告诉我们第2页的标题从第1个词开始,到第4个词结束,而“dog”这个词是第3个词。最后一步很简单:因为3大于1,小于4,我们肯定“dog”的这次命中确实出现在一个标题中,因此第2页应该是查询dog IN TITLE的命中。

现在搜索引擎可以转向寻找“dog”的第二个命中,也就是2-7(第2页的第7个词),但因为我们已经知道第2页是命中,因此可以忽略2-7这个项,转向下一个命中3-11(由一个框标记)。这表示“dog”是第3页第11个词。于是我们开始跳过被圈住的<titleStart>和<titleEnd>项,寻找以“3-”开始的项。(有一点需要重点注意,我们不必回到每行的开始,而是可以从之前扫描命中的地方重新开始。)在这个简单例子中,以“3-”开始的项恰好彼此相邻——<titleStart>是3-1,<titleEnd>是3-4。为便于参考,这两个数字都用框围了起来。接下来,我们又面临判定“dog”在3-11的命中是否位于标题内的问题。框内信息告诉我们,它们都是在第三页,“dog”是第11个词,而标题从第1个词开始,到第4个词结束。因为11大于4,所以“dog”的这次命中出现在标题之后,也就是不在标题内。网页3并不是查询dog IN TITLE的命中。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号