短语匹配(LCS)在 SEO 中的运用

本贴最后更新于 1519 天前,其中的信息可能已经事过景迁

对于公司的层面而言,SEO 往往是一个很悲催的角色,因为 SEO 这一块很少会得到重视。这往往不是取决于 SEO 流量在网站的占比、SEO 人员的能力等等,而是几乎所有人都觉得,SEO 就是没法做出什么事情的。因此很多公司认为 SEO 是网站应该有的一个职位,仅此而已。

如平常协助技术改他们的 bug,这边 gzip 忘开了、那边缓存设错了,折腾许久轮到 SEO 需求后,这个太难了、那个做不到。SEO 的被重视程度不够,就什么都麻烦。

且无法拿到网站服务器、数据库等等的权限,没法自己搞。总算还有唯一的完全自由的权限——论坛发帖。

进入正题吧,怎么编辑文章。

SEO 分为三面,用户、搜索引擎、网站。而 SEO 来编辑文章么,用户、网站面基本是没法顾及太多,没有编辑的专业能力,因此没法给互联网创造什么有价值的内容。那么就只能从搜索引擎面切入了,钻钻小空子。

提到搜索引擎面,必分析它的技术原理,涉及很多,本文只说短语匹配。在开源全文检索引擎 Sphinx 中,用来评估短语匹配的算法,称为 LCS(最长公共子串,可见百度百科)。

比如以下两个字符串:

aaabbbccc

xxxbbbyyy

它们的 LCS 是公共部分的 bbb,LCS 值为其长度,3。

LCS 算法有什么意义?

比如用户在搜索引擎搜索“百度 SEO”时,有两个网页:

A 网页:内容出现 2 次“百度 SEO”,没有出现零散“百度”或“SEO”

B 网页:内容出现 5 次“SEO”,且在网页导航栏里面,出现过 1 次“百度”

若只根据基于 TF-IDF 框架的经典 BM25 算法(某种程度上也可将就的将其称为关键词密度问题),B 网页的排名一般会比 A 网页高,因为对于“百度 SEO”,其中重要词项“SEO”在 B 网页出现次数更多。

而实际上可以看出的是,既然 A 网页都出现了两次完整的“百度 SEO”,它肯定是和这个主题比较相关的。而 B 网页的“百度”出现距离与“SEO”很远,则不能保证它和这个主题相关,它可能是关于 Google SEO 之类。

所以 A 网页排名应该比 B 网页高,而 LCS 算法则一定程度上解决了这个问题。词项权重的计算,对于 Sphinx 大致类似于:weight = mBM25 + nLCS(m, n 调节权重)

(可参阅 Sphinx 文档进一步理解:http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html#weighting)

当词组在页面上完整的出现一次后,这个页面就可以拿到完整的 LCS 权值,之后结合 BM25 等排序因子,综合得出最终排名。

(昨天刚好看到一篇博客:http://www.seoyangs.com/keywordsfenbu.html

很感动的看到了连向这里的友情链接,但文中对于短语匹配的理解似乎有误。另外个人感觉那个用表格计算 TF-IDF 的稍夸张了些。既然也清楚关键词出现的最佳频率,直接出现这些次数就好了,没能想通此处计算一个具体分值出来有什么意义)

实际对于商业搜索引擎,基本上会比 LCS 更完善一些,因为 LCS 也有比较致命的问题,比如在搜索“百度 SEO”,页面上有那么一句“针对百度做 SEO”的时候,该页面却无法得到 LCS 分值。

商业搜索引擎多半会计算最近命中距离,因为商业搜索引擎会在索引库记录每个词具体的命中位置,所以命中距离很好计算。(具体概念参阅各类搜索引擎原理书中的索引部分)

通过命中距离,如“针对百度做 SEO”,它和“针对性去做百度 SEO”这样的区别不大。而如果“⋯⋯ 搜索引擎有百度、Google 等。那么我们怎么去做 SEO 呢?”这里命中距离远了,所以其得分较低。

以前一篇文章里面这些知识有大致的提到过:《基于命中距离的关键词布局——大众点评 SEO 分析》,希望这篇的解释能让人更容易理解一些。

最后来个实例。论坛里面,有一个帖子非常热门,关于舞蹈家金星的八卦的,它得到了很多相关词的流量。

某天稍找了下相关关键词,发现“金星是男的还是女的”这个词稍有些搜索量,但帖子里面没有完整出现过该词。

然后回了一贴,就写了几个字“金星是男的还是女的?”,过了几天百度重访该页面后,该词的排名从十几二十名到了大约第 5 名,于是每天网站微妙的多出了几十个来自百度的访问。

从过程来说是挺省力的,看下词回个贴,每天几十流量。结合一些其它的方法,日搜索量十几万的词也单靠帖子页面撑上去过。每天这样搞搞,对于个人网站或也不错,但对于公司网站,这些都只是九牛一毛。

而如果能给编辑培训下呢?仅从本文所说的知识,都可以基于网站每天至少上百的新页面,让它们有每天多获得几个 SEO 流量的可能性。但这展开下去又要绕回文章开头所述的 SEO 重视性问题了,还是这样收尾吧。

  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 22 关注
  • LCS
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 174 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖 • 1 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 1 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 52 关注
  • 996
    13 引用 • 200 回帖 • 6 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 95 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 31 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 384 关注
  • V2Ray
    1 引用 • 15 回帖
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 529 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 154 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 654 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 510 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 407 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 73 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 211 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 4 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    47 引用 • 25 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 399 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 680 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    266 引用 • 665 回帖 • 1 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 629 关注
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    567 引用 • 3532 回帖