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

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

对于公司的层面而言,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 方式。

    36 引用 • 200 回帖 • 34 关注
  • LCS
    1 引用

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 647 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 271 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 110 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 444 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 1 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 8 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 3 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 93 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 677 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 3 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 36 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 52 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 61 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 674 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    108 引用 • 153 回帖
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 2 关注
  • OnlyOffice
    4 引用 • 15 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 554 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 754 回帖
  • 架构

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

    142 引用 • 442 回帖 • 1 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 365 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 1 关注