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

Rob*_*itt 60 php parsing screen-scraping relevance

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

比如说,谷歌使用PHP原生DOM库来解析内容.他们有什么方法可以在网页上找到最相关的内容?

我的想法是它将搜索所有段落,按每个段落的长度排序,然后从可能的搜索字符串和查询参数中找出每个段落的相关百分比.

假设我们有这个网址:

http://domain.tld/posts/stackoverflow-dominates-the-world-wide-web.html
Run Code Online (Sandbox Code Playgroud)

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

当您共享页面时,一个非常好的例子就是Facebook共享.Facebook快速创建链接并带回图像,内容等.

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

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


我想到的一些想法是:

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

我之所以需要这些信息:

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

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

希望你们能够理解这不适用于搜索引擎,但搜索引擎处理内容发现的方式与我需要的内容相同.

我不是要求商业机密,我问你的个人方法是什么.

The*_*can 29

这是一个非常普遍的问题,但是一个非常好的主题!肯定是upvoted :)但是我对目前为止提供的答案不满意,所以我决定写一个相当冗长的答案.

我不满意的原因是答案基本上都是正确的(我特别喜欢kovshenin(+1)的答案,这是非常与图论相关的......),但是所有这些都要么在特定因素上过于具体,要么也是如此一般.

这就像问蛋糕怎么样,你会得到以下答案:

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

你不会满意,因为你不知道什么是一个好蛋糕.当然还有很多或者收件人.

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

例如,用于发现新的独立音乐艺术家的搜索引擎可以将malus放在具有大量外部链接的艺术家网站上.

主流搜索引擎可能会完全相反,为您提供"相关结果".

(如前所述)谷歌发布了200多个因素.所以网站管理员知道如何优化他们的网站.很可能还有很多公众都不知道(在谷歌的情况下).

但是在非常广泛和抽象的术语SEO优化中,你通常可以将重要的术语分成两组:

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

  2. 答案有多受欢迎/好?或者:什么是pagerank?

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

同样重要的是,pagerank并不代表所有因素,只有Google将其归类为"受欢迎程度".好的,我的意思是其他与人气无关的因素.

对于Google,官方声明是他们希望向用户提供相关结果.这意味着所有算法都将针对用户的需求进行优化.

经过这么长时间的介绍(很高兴你还在我身边......)我会给你一系列我认为非常重要的因素(目前):

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

您会注意到很多文档的结构!

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

含义:问题单词出现在页面标题文本或标题段落段落中.同样适用于theese关键字的位置.页面越早越好.经常重复(如果不是太多,则以关键字填充的名义).

  • 整个网站处理主题(关键字出现在域/子域中)

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

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

第2类(页面有多重要/受欢迎?)

您会注意到并非所有因素都指向这个确切的目标.一些被包括在内(特别是谷歌)只是为了给页面提供一个提升,那......好吧......这应该得到/赢得它.

  • 内容为王!

在网络的其他部分中无法找到或只有很少的独特内容的存在可以提升.这主要通过网站上通常使用很少(重要单词)的无序单词组合来衡量.但也有更复杂的方法.

  • 新近度 - 更新更好

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

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

如果页面链接另一个页面,如果页面本身具有高页面调整,则该链接更有价值.

  • 外部链接多样性

基本上来自不同根域的链接,但其他因素也起作用.像地理位置(根据他们的IP地址)链接站点的网络服务器甚至分离的因素.

  • 信任等级

例如,如果有大量可信赖的已建立网站链接到您,则会获得信任等级.这就是为什么"纽约时报"的链接比一些奇怪的新网站更有价值,即使它的PageRank更高!

  • 域名信任

如果您的域名受信任,您的整个网站都会对您的内容产生影响.这里有不同的因素.当然,从可信赖的域到您的域的链接,但如果您与重要的网站在同一数据中心,它甚至会做得很好.

  • 主题中的特定链接.

如果可以解析为主题的网站链接到您和查询也可以解析为此主题,那就很好.

  • 随着时间的推移分发链接.

如果你在很短的时间内获得了大量的链接,那么这个时候和不久的将来你会很好.但是后来不太好.如果你缓慢而稳定地获得链接,那么对于"永恒"的内容来说,这对你有好处.

  • 来自重新域名的链接

来自.gov域的链接非常值得.

  • 用户点击行为

什么是搜索结果的点击率?

  • 在网站上花费的时间

谷歌分析跟踪等.如果用户在打开您的后点击或点击其他结果,也会跟踪它.

  • 收集的用户数据

投票,评级等,Gmail中的参考等

现在我将介绍第三类,上面的一两点将进入这个类别,但我没想到......类别是:

**您的网站一般有多重要/好**

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

因素包括:

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

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

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

  • 搜索确切名称的频率.

最后,但并非最不重要的是,我想说很多这些因素可以通过语义技术来丰富,并且可以引入新的因素.

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

新引入的语义标识符.例如,OWL标签可能在未来产生巨大影响.

例如,关于电影泰坦尼克号的博客可以在这个页面上标记它与维基百科关于同一部电影的文章中的内容相同.

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

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

Google甚至会根据搜索查询的主题应用不同相关因素!


Joh*_*Mee 21

整蛊,但我会采取刺:

图像(如果适用)

  • 页面上的第一个图像
  • 名称中包含字母"logo"的图像
  • 渲染最接近左上角(或右上角)的图像
  • 最常出现在网站其他页面上的图像
  • 小于某些最大尺寸的图像

来自最佳文本片段的<255段

  • 标题标签的内容
  • 元内容描述标签的内容
  • 第一个h1标签的内容
  • 第一个p标签的内容

将用于我们的搜索引擎的关键字,(堆栈溢出样式)

  • 域名的子字符串
  • 网址的子字符串
  • 标题标记的子字符串
  • 术语与页面上最常见的单词和页面顶部之间的距离

元数据关键字,描述,所有图像,更改日志(用于审核和管理目的)

  • AK!插科打诨!语法错误.

  • 谢谢.第一个'h1'应该是页面中最大和最重要的标题; 如果它包含搜索词,那么页面更可能是相关的.同样的'p'; 页面上的第一段更可能包含反映页面其余部分的单词,如介绍或后续摘要; 因此,如果它提到一次或两次搜索词,则整个页面可能是相关的. (3认同)

kov*_*nin 11

我不在谷歌工作,但大约一年前,我读到他们有超过200个因素来排名他们的搜索结果.当然排名最高的是相关性,因此从这个意义上说你的问题非常有趣.

什么是相关性,你如何计算它?有几种算法,我敢打赌Google有自己的算法,但我知道的是Pearson CorrelationEuclidean Distance.

我在这个主题(不一定是搜索引擎)上建议的好书是Toby Segaran 编程集体智慧(O'Reilly).本书中的一些示例显示了如何通过API或屏幕抓取从第三方网站获取数据,以及查找类似的条目,这非常好.

无论如何,回到谷歌.其他相关技术当然是全文搜索,你可能想要获得一本关于MySQL或Sphinx的好书.@Chaoley建议TSEP这也很有意思.

但实际上,我知道来自俄罗斯搜索引擎Yandex的人,他们所做的一切都是在NDA之下,所以我猜你可以接近,但除非你在谷歌工作,否则你无法完美;)

干杯.

  • 因此,第一步是找到最重要的信息并从两个网站中提取,下一步是计算它们的相关性.Toby的书再次提供了从一堆RSS提要中获取数据并对相关来源进行分组的良好示例,这很好,但更简单,因为RSS很短并且支持标签和类别.但你必须在其他地方寻找提取技术.我建议从Matthew Russell的"挖掘社交网络"开始.(是的,我对书很疯狂) (3认同)