今天互联网上有大约3.5亿个注册域名,数十亿个子域名和数万亿个不同的网页。搜索引擎收集这些页面包含的所有文本,将数百万台专业计算机组合成所谓的搜索引擎蜘蛛,下载所有可以访问的网页,解析这些页面的内容,并将它们存储在遍布整个网络的大型数据库中。

然后,他们的任务是获取存储在这些数据库中的所有内容,并找到使用它来对与用户按相关性排序的任何可能的关键字或短语匹配的网页进行排名的方法。

解析网页的内容

搜索引擎试图从人类用户的角度查看网页,但在确定页面的内容时必须推断出页面上的哪些单词或短语最为重要。网页包含HTML标记,并且在根据诸如字体大小,页面上的位置和字体可读性等因素进行索引时,网页上的术语可以被赋予更多权重。

网页还可以指定内容所在的语言,但是大多数搜索引擎现在能够执行语言识别以自动确定网页的语言。此外,页面上出现的术语可能会受到称为词干的过程,该过程采用“战斗力”,“战斗”和“战斗机”之类的术语,并将其缩减为“战斗”的词干。

创建倒置索引

大多数搜索引擎使用倒排索引来存储网页内容。考虑倒排索引如何存储和处理所有内容的方法是将搜索引擎的索引视为教科书背面的索引。书的索引包含书中使用的单词列表及其出现的页面(例如:生物书的索引可能包含渗透作用:65,573-578,654,以便让您知道“渗透”这个词在那些页码)。如果您要列出所有网页上显示的所有唯一字词列表,则该列表将比所有网页的内容长度小得多,因为大多数字词都显示在多个网页上。

存储数十亿的关键词和短语

搜索互联网上显示的所有唯一术语列表比搜索所有网页的完整内容要快得多,但该列表仍然太大,无法用于将网站与显示在上面的关键字进行实时匹配。对此的解决方案是将网页的内容存储为具有n个长度的子串的n -gram,并且大多数搜索引擎可能使用三元组来执行此操作。文档的三元组表示形式是将该文档分解为其所有3个字符组合,例如:

“毛衣”= { swe,wea,eat,ate,ter }

由于一个术语可以包含26个字母,10个数字和~10个符号的任意组合,所以可以存在的唯一三元组的总数是(26 + 10 + 10)^ 3,等于97,336,创建一个明显更小的术语列表实时搜索,而不是互联网上所有独特术语的列表,这些术语将在数千亿中。

优化重要关键字的内容

为了确保网页显示在为给定关键字返回的结果列表中,您可以做的最重要的事情是将该关键字放在页面上的可见位置,然后在页眉中使用它,元信息,页面的标题,以及相关上下文中的正文文本。

可能影响搜索引擎如何确定术语在页面上的相关性的其他因素是该术语出现的频率,逆文档频率和长度归一化等。