搜索引擎如何找到相关内容? [关闭]

2024-06-19

Google 在解析网络时如何找到相关内容?

例如,Google 使用 PHP 原生 DOM 库来解析内容。他们将采用什么方法来查找网页上最相关的内容?

我的想法是,它将搜索所有段落,按每个段落的长度排序,然后根据可能的搜索字符串和查询参数计算出每个段落的相关性百分比。

假设我们有这个 URL:

http://domain.tld/posts/stackoverflow-dominates-the-world-wide-web.html

现在,从该 URL 中,我会发现 HTML 文件名具有很高的相关性,因此我会看到该字符串与页面中的所有段落相比有多接近!

一个很好的例子是 Facebook 共享,即共享页面。 Facebook 很快就会自动识别该链接并返回图像、内容等。

我认为某种计算方法是最好的,可以根据周围的元素和元数据计算出相关性的百分比。

是否有关于内容解析最佳实​​践的书籍/信息,涵盖如何从网站获取最佳内容、可能讨论的任何算法或任何深入的回复?


我想到的一些想法是:

  • 查找所有段落并按纯文本长度排序
  • 以某种方式找到宽度和高度div容器并按 (W+H) 订购 - @Benoit
  • 检查元关键字、标题、描述并检查段落内的相关性
  • 查找所有图像标签并按最大顺序以及远离主段落的节点长度排序
  • 检查对象数据,例如视频,并计算最大段落/内容 div 中的节点
  • 找出与之前解析的页面的相似之处

我需要这些信息的原因是:

我正在建立一个网站,网站管理员向我们发送链接,然后我们列出他们的页面,但我希望网站管理员提交一个链接,然后我去抓取该页面以查找以下信息。

  • 图片(如果适用)
  • 最佳文本片段中的
  • 将用于我们的搜索引擎的关键字(Stack Overflow 风格)
  • 元数据关键字、描述、所有图像、更改日志(用于审核和管理目的)

希望你们能够理解,这不是针对搜索引擎的,而是搜索引擎处理内容发现的方式与我需要它的上下文相同。

我不是在要求商业秘密,我是在问你个人对此的态度是什么。


这是一个非常普遍的问题,但却是一个非常好的话题!绝对赞成:) 然而,我对到目前为止提供的答案并不满意,所以我决定就此写一个相当长的答案。

我不满意的原因是答案基本上都是正确的(我特别喜欢kovshenin(+1)的答案,它与图论非常相关......),但所有答案要么对某些因素太具体,要么太一般的。

这就像问如何烤蛋糕,你会得到以下答案:

  • 你做了一个蛋糕,然后把它放进烤箱。
  • 你肯定需要加糖!
  • 什么是蛋糕?
  • 蛋糕是一个谎言!

您不会满意,因为您不想知道什么才是好蛋糕。 当然还有很多食谱。

当然,谷歌是最重要的参与者,但是,根据用例,搜索引擎可能包含非常不同的因素或对它们进行不同的权重。

例如,用于发现新的独立音乐艺术家的搜索引擎可能会在 具有大量外部链接的艺术家网站。

主流搜索引擎可能会做完全相反的事情来为您提供“相关结果”。

Google 发布了(如前所述)200 多个因素。 所以网站管理员知道如何优化他们的网站。 很可能还有更多公众不知道的事情(以谷歌为例)。

但从非常广泛和抽象的角度来看SEO http://en.wikipedia.org/wiki/Search_engine_optimization优化通常可以将重要的分为两组:

  1. 答案与问题的匹配程度如何?或者: 页面内容与搜索词的匹配程度如何?

  2. 答案有多受欢迎/好?或者: 页面排名是多少?

在这两种情况下,重要的是我不是在谈论整个网站或域,而是在谈论具有唯一 URL 的单个页面。

同样重要的是,页面排名并不代表所有因素,而仅代表 Google 归类为流行度的因素。我所说的“好的”是指与受欢迎程度无关的其他因素。

就谷歌而言,官方声明是他们希望向用户提供相关结果。 这意味着所有算法都将根据用户的需求进行优化。

因此,在这么长的介绍之后(很高兴你仍然和我在一起......)我将给你列出我认为非常重要的因素(目前):

第 1 类(答案与问题的匹配程度如何?

您会注意到很多内容都取决于文档的结构!

  • 该页面主要处理确切的问题。

含义:疑问词出现在页面标题文本或标题段落中。 这些关键词的位置也是如此。页面越早越好。 也经常重复(如果不是太多的话,这被称为关键字填充)。

  • 整个网站都涉及该主题(关键字出现在域/子域中)

  • 单词是本页面的重要主题(内部链接锚文本跳转到关键字的位置或锚文本/链接文本包含关键字)。

  • 如果外部链接使用链接文本中的关键字链接到此页面,情况也是如此

类别 2(该页面的重要性/受欢迎程度如何?)

您会注意到,并非所有因素都指向这个确切目标。 有些被包含(尤其是谷歌)只是为了增强页面的质量, 那...好吧...那只是应得/应得的。

  • 内容为王!

在网络的其他部分中找不到或很少的独特内容的存在会起到推动作用。 这主要是通过网站上通常很少使用的单词(重要单词)的无序组合来衡量的。但还有更复杂的方法。

  • 新近度 - 越新越好

  • 历史变化(页面过去更新的频率。变化是好的。)

  • 外部链接流行度(有多少链接?)

如果一个页面链接另一个页面,并且该页面本身具有较高的页面排名,则该链接的价值更高。

  • 外部链接多样性

基本上来自不同根域的链接,但其他因素也发挥了作用。 诸如链接站点的网络服务器在地理上的分离程度(根据其 IP 地址)等因素。

  • 信任等级

例如,如果带有编辑内容的大型、可信、成熟的网站链接到您,您就会获得信任排名。 这就是为什么链接来自纽约时报 http://en.wikipedia.org/wiki/The_New_York_Times比一些奇怪的新网站更有价值,即使它的 PageRank 更高!

  • 域信任

如果您的域名值得信赖,您的整个网站就会增强您的内容。 这里有不同的因素。当然,从受信任的站点到您的域的链接,但如果您与重要网站位于同一数据中心,它甚至会很有用。

  • 主题特定链接。

如果可以解析到某个主题的网站链接到您,并且查询也可以解析到该主题,那就很好。

  • 随着时间的推移链接的分布。

如果您在短时间内获得了很多链接,这对您此时和不久的将来都有好处。但到了后来就不太好了。 如果您缓慢而稳定地获得链接,这将对您获得“永恒”的内容有好处。

  • 来自受限域的链接

一个链接来自.gov域名很值钱。

  • 用户点击行为

您的搜索结果的点击率是多少?

  • 在现场花费的时间

谷歌分析跟踪等。如果用户在打开您的结果后单击返回或单击另一个结果,它也会被跟踪。

  • 收集的用户数据

投票、评分等、Gmail 中的引用等。

现在我要介绍第三类,上面的一两点都会归入这一类,但我没有想到……该类是:

** 您的网站总体上有多重要/有多好 **

根据您网站的质量,您的所有页面都会排名稍高

因素包括:

  • 良好的网站架构(易于导航、结构化、站点地图等...)

  • 如何建立(长期存在的域名更有价值)。

  • 主机信息(您附近还有哪些其他网站托管?

  • 您的确切姓名的搜索频率。

最后但并非最不重要的一点是,我想说,语义技术可以丰富这些因素,并且可以引入新的因素。

例如,有人可能会搜索泰坦尼克号,而您有一个关于冰山的网站......可以将其设置为可以反映的相关性。

新引入的语义标识符。例如OWL http://en.wikipedia.org/wiki/Web_Ontology_Language标签可能会在未来产生巨大的影响。

例如,有关电影《泰坦尼克号》的博客可以在此页面上放置一个标志,表明它与有关同一部电影的维基百科文章上的内容相同。

这种链接目前正在大力开发和建立,没有人知道它将如何使用。

也许重复的内容被过滤掉,只显示最重要的相同内容?或者也许反过来?您会看到很多与您的查询匹配的页面。即使它们不包含您的关键字?

谷歌甚至根据您的搜索查询主题应用不同相关性的因素!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搜索引擎如何找到相关内容? [关闭] 的相关文章

  • 在 LAMP 配置中创建个性化 URL

    在 LAMP 配置下创建用户个性化 URL 的最佳方法是什么 例如 可以按如下方式访问用户个人资料页面 http www website com profile php id 1 http www website com profile p
  • 从mysql数据库读取pdf文件

    我正在使用这个例子http www php mysql tutorial com wikis mysql tutorials uploading files to mysql database aspx http www php mysql
  • PHP 难以检查数组中的元素是否为整数类型

    我正在尝试检测一个或多个变量是否包含数字 我尝试了几种不同的方法 但并没有完全成功 这是我尝试过的
  • JavaScript 可以直接调用 PHP 函数吗?还是需要单独的 php 文件来调用该函数?

    我正在做一些基本的 Ajax 东西 不是 jquery 只是学习基础知识 并且我设置了一个通用结构 其中 html 调用一个 javascript 函数 该函数将数据发送到并运行特定的 php 页面 但是如果我只需要运行一个已经在funct
  • PHP:使用 imagemagick 将图像转换为 TIFF

    我正在尝试使用 imagemagick 将图像转换为 tiff 但在尝试写入文件时遇到问题 我收到一条错误消息 无法打开图片 错误 blob c OpenBlob 2584 这是我正在使用的代码 im2 new Imagick image
  • 在通过 AJAX 响应发送的页面上执行 javascript 函数

    我想执行一个从服务器通过 AJAX 请求发送的函数 函数体不在调用页面中 例如 完整代码如下 1 调用PHP脚本
  • PHP 数组按月和总和分组

    我有一个 php 数组 如第一张图片所示 我想要的只是按月获取值的总和 如下所示 我知道这对我们大多数人来说可能很容易 但说实话 我找不到可行的方法来实现它 我尝试在谷歌上搜索 但我找到的所有结果都是关于对数据库查询结果进行分组和求和 而对
  • magento 中的自动发票

    我创建了新的自定义产品类型 它扩展了 magento 中的虚拟产品 现在我想阻止在线支付的自动发票 例如 当订单包含至少一种自定义产品类型时 使用 Paypal 所有包含此类产品的订单都必须手动开具发票 我应该如何解决这个问题 最好的方法是
  • PHP PDF生成问题

    我使用 FPDF 在 PHP 中创建 pdf 我使用会话变量将变量在一种表单之间传递到另一种表单 当我提供一个值时 Report php
  • 使用ffmpeg转换文件时PHP内部服务器错误500

    我有一个 PHP 脚本 在我的服务器中通过 cron 作业调用它来运行上传的视频转换 它对于某些视频效果很好 但是当视频稍大一点 例如 21MB 时 我会得到一个500 Internal Server Error并且没有其他输出 我认为这个
  • 目录中每个文件的循环代码[重复]

    这个问题在这里已经有答案了 我有一个图片目录 我想循环遍历并对其进行一些文件计算 这可能只是睡眠不足 但我如何使用 PHP 来查找给定的目录 并使用某种 for 循环遍历每个文件 Thanks scandir http php net sc
  • 使用 SFTP 上传文件

    我已成功通过 ftp 上传文件 但现在需要通过 SFTP 上传 我可以成功连接到远程服务器 创建文件并写入文件 但无法将现有文件从本地服务器上传到远程服务器 ftp put 没有通过 sftp 连接触发吗 我的代码用来编写一个文件 Send
  • 是否可以动态添加代码/扩展类?

    我想为我的代码编写一种 插件 模块 系统 如果我可以在定义类后将内容 添加 到类中 那么事情会变得更加容易 例如 这样的事情 class foo public function a return b 上课了 现在我想在定义后向其中添加另一个
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • 将 Zend Framework 最小化为 Zend_Mail? [复制]

    这个问题在这里已经有答案了 可能的重复 在没有实际框架的情况下使用 Zend Framework 组件 https stackoverflow com questions 1402989 use zend framework compone
  • 访问位于服务器根目录之前/之外的文件?

    我正在为一家售后客服企业做一个内网 员工需要能够将 img 文件上传到互联网服务器 我需要将它们存储在 is BEFORE 的目录中www 网站的根目录 使用 php 执行此操作非常简单 但如何在上传这些图像后将它们包含在网站上 我试过这段
  • 浏览器关闭后从数据库中删除

    我正在开发一个电子商务应用程序 但问题是 当用户将产品添加到购物车并在订购前关闭浏览器时 购物车会带走所有产品 所有购物车项目都保存在表中 如果用户关闭浏览器而不订购 我只想刷新购物车 您可以使用 Javascript 事件捕获浏览器关闭并
  • 通过 Laravel 框架集成现有项目?

    我已经从 github 克隆了一个项目 现在我需要集成该项目 那么如何使用 laravel 框架 我是否需要创建一个新项目然后需要替换文件夹 或任何其他替代方案 因为我是这个框架的新手 帮助我 这是一个广泛的问题 因为这取决于您的项目 而我
  • 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

    我有这个数组 REV Array 0 gt 240 1 gt 241 2 gt 242 3 gt 243 4 gt 249 我现在使用下面的代码进行插入 将每个数组的元素存储在带有 id userID Type 和 Date 的行中 if
  • 在php中获取二进制数据大小的正确方法是什么?

    我已阅读文件的一部分 现在想确保该部分的大小正确 我怎样才能在 php 中做到这一点 part fread file 1024 return some function part 1024 我已经阅读了这些示例 但我怀疑是否要使用 strl

随机推荐

  • CSS:缩放字体大小以适应父块元素的高度

    我发现的几乎每个问题和答案都谈到了视口大小 这确实不是我的问题 拿着这支笔 https codepen io njt1982 pen pZjZNM https codepen io njt1982 pen pZjZNM 我有一个非常基本的
  • 如何在Windows上正确使用node.js child_process.spawn()重定向?

    我有一个干净的 Windows 8 1 盒子 安装了最新的 node js v0 10 29 我在两个文件中有以下测试代码 a js var sub require child process spawn node b js silent
  • 如何检测用户是否禁用 GPS(Android - Play 服务)

    我使用 gms location LocationListener Google Play 服务 来获取用户的位置 它工作正常 但我想检测用户何时禁用或启用他 她的 GPS 就像这张照片一样 当我打开 关闭位置时 不会调用任何方法 当我切换
  • 如何处理两个 gradle 插件的任务冲突?

    我使用 gradle 和两个插件com jfrog artifactory and io swagger core v3 swagger gradle plugin 现在我想按照此处所述进行配置https github com swagge
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

    我正在尝试上传一个 csv使用 python 将文件写入 Microsoft Azure 存储帐户 我已经发现C sharp https blogs msdn microsoft com jmstall 2012 08 03 convert
  • 我找不到 IntelliJ 快捷方式

    我使用 vim 一段时间 我知道有一个 intellij vim 插件 我很好奇内置的 IntelliJ 文本导航存在什么 如何打开实时模板来创建模板 如何查看以 tr 开头的现有模板列表 如何进行全局搜索并在当前文档中进行搜索 然后转到下
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 使用剪贴板 SetText 换行

    如何使用 SetText 方法添加换行符 I tried Clipboard SetText eee n xxxx 但当我将剪贴板数据粘贴到记事本中时 它没有给我预期的结果 预期结果 eee xxxx 我怎样才能做到这一点 Windows
  • 如何使用NetLogo发送参数?

    我对 NetLogo 还很陌生 这就是我被困在这里几周的原因 我想做的是让特工分成 2 队 4 人一组 我的计划是让一个函数保存 4 个海龟 ID to assign groupmates a1 a2 a3 a4 并将他们分配到团队 1 a
  • Libgdx 和 Google 应用内购买结果

    我遵循了这些指示 https github com libgdx libgdx wiki Interfacing with platform specific code使用 ActionResolver 接口集成 Libgdx 和原生 An
  • 添加两个 ActiveRecord::Relation 对象[重复]

    这个问题在这里已经有答案了 如何将两个关系添加在一起 当我尝试 运算符时 它返回一个数组 但我需要它来返回关系 谢谢 麦克风 Try new relation relation merge another relation
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se
  • Tensorflow Eager Execution 不适用于学习率衰减

    在这里尝试让一个热切的执行模型与 LR 衰减一起工作 但没有成功 这似乎是一个错误 因为学习率衰减张量似乎没有更新 如果我遗漏了什么 你可以帮我一下吗 谢谢 下面的代码正在学习一些词嵌入 但是 那学习率衰减部分根本不起作用 class Wo
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in
  • 如何过滤 Solr 中多值字段返回的值

    我有一个文档 其中包含一个名为 uuid 的字段 该字段是一个列表 多值 每个文档最多可以有 100k 个值 例如 我想搜索与以 5ff6115e 开头的 uuid 匹配的文档 我已经可以通过使用成功做到这一点q uuids 5ff6115
  • 使用 JQuery 预填充选择字段的下拉选项验证

    我有这个 JQuery 片段来防止选择已在另一个字段中选择的下拉选项 var coll select name service on change function coll each function var val this value
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内