SEO之搜索引擎的工作原理(三)

初创企业需要建站的朋友看这篇文章,谢谢支持:我给不会敲代码又想搭建网站的人建议

(接上一篇。。。)

排名


经过搜索引擎蜘蛛抓取页面,索引程序计算得到倒排索引后,搜索引擎就准备好可以随时处理用户搜索了。用户在搜索框填入关键词后,排名程序调用索引库数据,计算排名显示给用户,排名过程是与用户直接互动的。


1、搜索词处理

搜索引擎接收到用户输入的搜索词后,需要对搜索词做一些处理,才能进入排名过程。
搜索词处理包括如下几方面。
(1) 中文分词。与页面索引时一样,搜索词也必须进行中文分词,将查询字符串转换为以词为基础的关键词组合。分词原理与页面分词相同。
(2)去停止词。和索引时一样,搜索引擎也需要把搜索词中的停止词去掉,最大限度地提高排名相关性及效率。
(3)指令处理。查询词完成分词后,搜索引擎的默认处理方式是在关键词之间使用“与”逻辑。也就是说用户搜索“减肥方法”时,程序分词为“减肥”和“方法”两个词,搜索引擎排序时默认认为,用户寻找的是既包含“减肥”,也包含“方法”的页面。只包含“减肥”不包含“方法”,或者只包含“方法”不包含“减肥”的页面,被认为是不符合搜索条件的。
当然,这只是极为简化的为了说明原理的说法,实际上我们还是会看到只
包含一部分关键词的搜索结果。
另外用户输入的查询词还可能包含一些高级搜索指令,如加号、减号等,搜索引擎都需要做出识别和相应处理。有关高级搜索指令,后面还有详细说明。
(4)拼写错误矫正。用户如果输入了明显错误的字或英文单词拼错,搜索引擎会提示用户正确的用字或拼法,如下图所示。
图片来源网络

(5)整合搜索触发。某些搜索词会触发整合搜索,比如明星姓名就经常触发图片和视频内容,当前的热门话题又容易触发资讯内容。哪些词触发哪些整合搜索,也需要在搜索词处理阶段计算。


2、文件匹配
搜索词经过处理后,搜索引擎得到的是以词为基础的关键词集合。文件匹配阶段就是找出含有所有关键词的文件。在索引部分提到的倒排索引使得文件匹配能够快速完成,如下表所示。
在这里插入图片描述

假设用户搜索“关键词2关键词7”,排名程序只要在倒排索引中找到“关键词2”和“关键词7”这两个词,就能找到分别含有这两个词的所有页面。经过简单计算就能找出既包含“关键词2”,也包含“关键词7”的所有页面:文件1和文件6。


3、初始子集的选择
找到包含所有关键词的匹配文件后,还不能进行相关性计算,因为找到的文件经常会有几十万几百万,甚至上千万个。要对这么多文件实时进行相关性计算,需要的时间还是比较长的。
实际上用户并不需要知道所有匹配的几十万、几百万个页面,绝大部分用户只会查看前两页,也就是前20个结果。搜索引擎也并不需要计算这么多页面的相关性,而只要计算最重要的一部分页面就可以了。常用搜索引擎的人都会注意到,搜索结果页面通常最多显示100个。用户点击搜索结果页面底部的“下一页”链接,最多也只能看到第100页,也就是1000个搜索结果,百度则通常返回76页结果。

所以搜索引擎只需要计算前1000个结果的相关性,就能满足要求。
但问题在于,还没有计算相关性时,搜索引擎又怎么知道哪一千个文件是最相关的?所以用于最后相关性计算的初始页面子集的选择,必须依靠其他特征而不是相关性,其中最主要的就是页面权重。由于所有匹配文件都已经具备了最基本的相关性(这些文件都包含所有查询关键词),搜索引擎通常会用非相关性的页面特征选出一个初始子集。初始子集的数目是多少?几万个?或许更多,外人并不知道。不过可以肯定的是,当匹配页面数目巨大时,搜索引擎不会对这么多页面进行计算,而必须选出页面权重较高的一个子集,再对子集中的页面进行相关性计算。


4、相关性计算
选出初始子集后,对子集中的页面计算关键词相关性。计算相关性是排名过程中最重要的一步。相关性计算是搜索引擎算法中最令SEO 感兴趣的部分。
影响相关性的主要因素包括如下几方面。

(1)关键词常用程度。经过分词后的多个关键词,对整个搜索字符串的意义贡献并不相同。越常用的词对搜索词的意义贡献越小,越不常用的词对搜索词的意义贡献越大。举个例子,假设用户输入的搜索词是“我们冥王星”。“我们”这个词常用程度非常高,在很多页面上会出现,它对“我们冥王星”这个搜索词的辨识程度和意义相关度贡献就很小。
找出那些包含“我们”这个词的页面,对搜索排名相关性几乎没有什么影响,有太多页面包含“我们”这个词。
而“冥王星”这个词常用程度就比较低,对“我们冥王星”这个搜索词的意义贡献要大得多。那些包含“冥王星”这个词的页面,对“我们冥王星”这个搜索词会更为相关。
常用词的极致就是停止词,对页面意义完全没有影响。
所以搜索引擎对搜索词串中的关键词并不是一视同仁地处理,而是根据常用程度进行加权。不常用的词加权系数高,常用词加权系数低,排名算法对不常用的词给予更多关注。
我们假设A、B两个页面都各出现“我们”及“冥王星”两两个词。但是“我们”这个词在A页面出现于普通文字中,“冥王星”这个词在A页面出现于标题标签中。B页面正相反,“我们”出现在标题标签中,而“冥王星”出现在普通文字中。那么针对“我们冥王星”这个搜索词,A页面将更相关。

(2)词频及密度。一般认为在没有关键词堆积的情况下,搜索词在页面中出现的次数多,密度越高,说明页面与搜索词越相关。当然这只是一个大致规律,实际情况未必如此,所以相关性计算还有其他因素。出现频率及密度只是因素的一部分,而且重要程度越来越低。

(3)关键词位置及形式。就像在索引部分中提到的,页面关键词出现的格式和位置都被记录在索引库中。关键词出现在比较重要的位置,如标题标签、黑体、H1等,说明页面与关键词越相关。这一部分就是页面 SEO所要解决的。

(4)关键词距离。切分后的关键词完整匹配地出现,说明与搜索词最相关。比如搜索“减肥方法”时,页面上连续完整出现“减肥方法”四个字是最相关的。如果“减肥”和“方法”两个词没有连续匹配出现,出现的距离近一些,也被搜索引擎认为相关性稍微大一些。

*(5)链接分析及页面权重。*除了页面本身的因素,页面之间的链接和权重关系也影响关键词的相关性,其中最重要的是锚文字。页面有越多以搜索词为锚文字的导入链接,说明页面的相关性越强。
链接分析还包括了链接源页面本身的主题、锚文字周围的文字等。


5、排名过滤及调整
选出匹配文件子集、计算相关性后,大体排名就已经确定了。之后搜索引擎可能还有一些过滤算法,对排名进行轻微调整,其中最主要的过滤就是施加惩罚。一些有作弊嫌疑的页面,虽然按照正常的权重和相关性计算排到前面,但搜索引擎的惩罚算法却可能在最后一步把这些页面调到后面去。典型的例子是百度的11位,Google 的负6、负30、负950等算法。


6、排名显示
所有排名确定后,排名程序调用原始页面的标题标签、说明标签、快照日期等数据显示在页面上。有时搜索引擎需要动态生成页面摘要,而不是调用页面本身的说明标签。


7、搜索缓存
用户搜索的关键词有很大一部分是重复的。按照2/8定律,20%的搜索词占到了总搜索次数的80%。按照长尾理论,最常见的搜索词没有占到80%那么多,但通常也有一个比较粗大的头部,很少一部分搜索词占到了所有搜索次数的很大一部分。尤其是有热门新闻
发生时,每天可能有几百万人搜索完全相同的关键词。
如果每次搜索都重新处理排名可以说是很大的浪费。搜索引擎会把最常见的搜索词存入缓存,用户搜索时直接从缓存中调用,而不必经过文件匹配和相关性计算,大大提高了排名效率,缩短了搜索反应时间。


8、查询及点击日志
搜索用户的IP地址、搜索的关键词、搜索时间,以及点击了哪些结果页面,搜索引擎都记录形成日志。这些日志文件中的数据对搜索引擎判断搜索结果质量、调整搜索算法、预期搜索趋势等都有重要意义。

上面我们简单介绍了搜索引擎的工作过程。当然实际搜索引擎的工作步骤与算法是非常复杂的。上面的说明很简单,但其中有很多技术难点。
搜索引擎还在不断优化算法,优化数据库格式。不同搜索引擎的工作步骤也会有差异。但大致上所有主流搜索引擎的基本工作原理都是如此,在过去几年及可以预期的未来几年,都不会有实质性的改变。

(完)
图片来源网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/312173.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 两种方法截取活动窗口屏幕,实现窗体截图

方法1,截屏内容仅包括活动窗口界面,而方法2是从屏幕范围取图,截屏内容会包括屏幕上所有内容。例如有一些程序在桌面顶层显示半透明的悬浮窗,用方法2截屏就会包括这些内容,并不是单纯的活动窗口内容。 方法1&#xff0c…

pyqt的人脸识别 基于face_recognition库

参考文献: 1、python face_recognition实现人脸识别系统_python facerecognition检测人脸-CSDN博客 2、cv2.VideoCapture()_cv2.videocapture(0)-CSDN博客 1、camera.py文件代码如下;目录如下 import sys from PyQt5.QtWidgets import QApplication, …

【机器学习】贝叶斯算法在机器学习中的应用与实例分析

贝叶斯算法在机器学习中的应用与实例分析 一、贝叶斯算法原理及重要性二、朴素贝叶斯分类器的实现三、贝叶斯网络在自然语言处理中的应用四、总结与展望 在人工智能的浪潮中,机器学习以其独特的魅力引领着科技领域的创新。其中,贝叶斯算法以其概率推理的…

Docker安装xxl-job分布式任务调度平台

文章目录 Docker安装xxl-job分布式任务调度平台1.xxl-job介绍2. 初始化“调度数据库”3、docker挂载运行xxl-job容器3.1、在linux的opt目录下创建xxl_job文件夹,并在里面创建logs文件夹和application.properties文件3.2、配置application.properties文件&#xff0c…

数据结构 -- 二分查找

本文主要梳理了二分查找算法的几种实现思路,基本概念参考 顺序、二分、哈希查找的区别及联系_生成一个大小为10万的有序数组,随机查找一个元素,分别采用顺序查找和二分查找方式-CSDN博客 1、基本概念 (1)前提条件:待查找数据必须…

GPT 浅析

GPT 浅析 文章目录 GPT 浅析GPT 1无监督预训练有监督微调任务相关的输入变换 GPT2GPT3 GPT 1 在模型架构上,GPT-1基于Transformer构造,这是因为与其他卷积神经网 络或者循环神经网络相比,Transformer提供了效率更高的方法来处理文本 中的长期…

leetcode hot100_day20

4/14/2024 128.最长连续序列 自己的 这是前两天做一半的题目了。这题给我的教训就是用哈希表的时候一定一定要考虑重复元素的问题!!!! 这题让我想到了最长递增子序列,只是名字有点像。子序列和子数组还不一样一个连续…

【HCIP学习】OSPF协议基础

一、OSPF基础 1、技术背景(RIP中存在的问题) RIP中存在最大跳数为15的限制,不能适应大规模组网 周期性发送全部路由信息,占用大量的带宽资源 路由收敛速度慢 以跳数作为度量值 存在路由环路可能性 每隔30秒更新 2、OSPF协议…

错误分析 (Machine Learning研习十九)

错误分析 您将探索数据准备选项,尝试多个模型,筛选出最佳模型,使用 Grid SearchCV微调其超参数,并尽可能实现自动化。在此,我们假设您已经找到了一个有前途的模型,并希望找到改进它的方法。其中一种方法就…

第九届少儿模特明星盛典 全球赛推广大使『武家翔』精彩回顾

2024年1月30日-2月1日,魔都上海迎来了龙年第一场“少儿形体行业美育春晚”!由IPA模特委员会主办的第九届少儿模特明星盛典全球总决赛圆满收官!近2000名少儿模特选手从五湖四海而来,决战寒假这场高水准,高人气&#xff…

uni-app学习

目录 一、安装HBuilderX 二、创第一个uni-app 三、项目目录和文件作用 四、全局配置文件(pages.json) 4.1 globalStyle(全局样式) 导航栏:背景颜色、标题颜色、标题文本 导航栏:开启下拉刷新、下拉背…

Axure实现导航栏的展开与收缩

Axure实现导航栏的展开与收缩 一、概要介绍二、设计思路三、Axure制作导航栏四、技术细节五、小结 一、概要介绍 使用场景一般是B端后台系统需要以导航栏的展开与收缩实现原型的动态交互,主要使用区域是左边或者顶部的导航栏展开与收缩,同一级导航下的小…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务。 JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MOM 是 MessageOriented Middleware 的英文缩写&am…

Servlet测试1

通过按钮提交get,post请求,并且后端响应数据,显示到前端 当点击get按钮时 是发起Get请求 后端接收到Get请求后,把数据写入到body内 当点击pst按钮时 是发起Post请求 后端接收到Post请求后,把数据写入到body内 之后前端就从bod…

Python 物联网入门指南(七)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第二十四章:基本开关 到目前为止一定是一段史诗般的旅程!回想一下你开始阅读这本书的时候,你是否曾想象…

HarmonyOS开发实战:【亲子拼图游戏】

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式益智拼图游戏,可以两台设备同时开启一局拼图游戏,每次点击九宫格内的图片,都会同步更新两台设备的图片位置。效果图如下: 说明: 本示例涉及使…

项目管理利器 Git

一、序言 今天聊聊 Git。 二、开发的问题 在开发项目时,我们的代码都是直接放在本地的机器上的。如果本地机器出现了问题,怎么办?在企业中,开发项目都是团队协作,一个团队共同维护一个项目该如何处理?团…

C++11(下篇)

文章目录 C111. 模版的可变参数1.1 模版参数包的使用 2. lambda表达式2.1 Lambda表达式语法捕获列表说明 2.2 lambda的底层 3. 包装器3.1 function包装器3.2 bind 4. 线程库4.1 thread类4.2 mutex类4.3 atomic类4.4 condition_variable类 C11 1. 模版的可变参数 C11支持模版的…

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列,该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

自定义类似微信效果Preference

1. 为自定义Preference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…