为何以及如何整合Google搜索到WP博客

Google Logo早在06年10月份【1】,Google就推出了自定义搜索引擎,到了07年11月份【2】,又推出了该项服务的多语言版本。现在,这项服务已经被使用到了成千上万的网站中去了。相信大家已经发现了,很多的WordPress博客也悄悄换上了Google搜索。就我个人熟悉的几个名博或朋友,如水煮鱼阅微堂stephen侠姐等等早就已经是Google自定义搜索的用户了。那么,我,或者说作为读者的您,是不是有必要换上Google自定义搜索呢?又该如何操作呢?本文带给您Charles对此的理解。

为何使用Google自定义搜索?

减少数据库查询?使用Google搜索的话,当然可以减少对自己博客服务器的查询次数,但是作为一个普通博客,每天能有多少人去你的博客搜索呢?5,000人够多么?50,000人又如何,这确实是服务器的负载,不过这对于服务器来说,不是什么很重的负载,毕竟一台主机上绝大多数人,达不到5万这个量级的。不过,能省则省,何乐不为?

速度更快?对于一台高性能,低负载的博客主机来说,Google的优势并不明显,毕竟1s和0.8秒的差距不是什么人可感知的差距。但是,对于某些架在国外主机上的博客来说,对于某一部分访问不畅的用户,Google搜索的速度绝对要快于博客主机本身搜多的速度,毕竟Google服务器遍布全世界,总能有一台相对快的对用户请求做出响应。

结果更精确?哈哈,这个说法其实是有相当问题的。因为,Google对你的博客的搜索结果,直接取决于对你博客的收录数量,如果某篇文章根本没有收录,就不可能搜出来,那么谈何精确呢?Google连你博客的一个完备的数据集合都不具备。另外,从时效性上来看,Google的搜索也要落后,你认为Google对你博客的抓取频率是多少呢?无论有多快和WordPress博客本身还是有区别的。

能整合广告?能赚钱?呵呵……对此,我只能苦笑了。

好吧,貌似我已经把必须使用Google搜索的理由都推翻了,至少,从我自己的视角来看,使用Google搜索的必要性是不存在的。得出这么一个结论,是不是让诸位看官有点吃惊了?不过呢,我个人还是选择了整合Google搜索到我的博客。接下来,我来谈谈我是怎么想的。(以下内容,不喜欢的可以跳过)

首先,请大家去看看WordPress里面关于搜索的那段代码是怎么写的。那段代码在wp-includes/query.php中。wp2.5.x的是966行附近。wp2.6.x是979行附近。wp2.7.x是1740行附近。当然,内容是相当雷同的。简单说下,首先处理查询字符串,怎么处理的,我也看不大明白,结果我是知道的,查询内容被分解成了一个个关键词。然后,生成SQL语句中的条件字符串,类似于post_title LIKE %term_i% OR post_content LIKE %term_i%,对于每一个关键词i来说,都要生成这么一个串,于是乎,如果用户在搜索框中写了一长句话的话,那么结局可想而知了,博客主机的MySQL服务器将运行一个十分冗长的SQL语句。其效率也可想而知了。

其次,不知道有没有高手了解数据库的原理,即,这个LIKE操作,到底是怎样搜索的呢?就我所了解到的非常有限的知识来看,这个LIKE是使用了近似于正则表达式的方法,逐条检索数据库中的每条记录的。好,问题来了,现在数据库里只有一点点数据,1,000篇文章够不够多?有这个量的人很少吧,哈哈。10,000又如何?博客很难达到那个量的。所以,WordPress的搜索功能,看起来总是那么迅速。但是,WordPress博客自带的数据库搜索的发展趋势是明确的,文章越多越长,速度越慢。数据库里的内容本来是没有顺序的,索引给数据库带来了高速检索的机制(排好序的数据),但是,大家从代码里可以看到,这么样子写查询,跟索引是八棒子打不着的。

那么,搜索引擎的工作原理是如何的呢?第一步,蜘蛛爬取网页,博客的每个页面,由Google蜘蛛统一抓取到Google的服务器上;第二步,对所有得到的网页的内容建立索引,这里所说的索引,是搜索引擎内部使用的索引,非是数据库那种索引。基本上来说,一篇文章到搜索引擎里面,所有的词语会被切割开来,这个过程叫做分词,然后对每个词语建立一个索引,非常庞大的工程吧,简直令人叹为观止的庞大,因为全世界的网页约有600亿之多。而且,一般来说,搜索引擎会建立倒排索引(reverse index),简单说,就像英文技术书后面的Index一样,某个词,出现在第几页,第几页。;第三步,就是等待查询请求了,如果请求来了,搜索引擎就会去它自己建立好的索引中去查找,然后返回结果集合给用户;第四步,对检索结果进行排序,一般来说,搜索引擎的排序是按照跟关键词相关的程度来排序的,一篇出现WordPress十次以上的文章,肯定是比只出现了一次的要更与WordPress这个词有关了(对于数据库来说,根本没有这个步骤,你查询密码破解,很有可能查到一篇《黑客帝国》的影评);第五步,这个步骤只对自定义搜索引擎才有,就是对结果集合进行过滤,将不属于你的域名下的结果全部清除。

搜索引擎是多么一个让人叹为观止的系统啊,一次看似简单的查询,有早先蜘蛛的辛勤工作,然后加上建立索引,最后是成千上万台机器去检索那些索引,一次搜索是无数计算机告诉计算的结果,单单冲着这个,我就要选用真正的搜索引擎了,因为,这真的很伟大。

最后,是搜索引擎对于查询字符串的分析能力,不知道大家知不知道,可以在Google搜索框中敲入及其复杂的查询语句,无论是整个句子,还是布尔表达式,或者许多奇怪的Google语法,这种竭尽全力去理解用户意图的贴心做法,绝对不是WordPress内部那两个正则表达式可以比拟的东西。

综上所述,使用Google搜索,可以获得更相关的搜索结果,可以更好的理解用户的查询,可以调动更多的计算机工作,满足你更大的支配欲(O(∩_∩)O)。所以,我还是选用了Google搜索。当然,对于我个人,还有个原因,我是Google Fans,你看我的主题,使用Google搜索才是理所当然的事情嘛。

如何在WordPress中整合Google自定义搜索引擎?

看看参考【3】,你可以从宏观上把握住这个整合的总体流程。而参考【4】,可以给你一个整合操作的详细指导。

参考文章:

【1】Google自定义搜索引擎重大更新:可自动搜索相连网站

【2】Google推出多语言自定义搜索引擎

【3】我爱水煮鱼:《整合Google自定义搜索到WordPress中》 :这是一篇简单介绍如何整合Google搜索到WP博客的文章,不过,这篇文章只有简单的1,2,3,… 基本没有什么可操作性。不过讲解的步骤是对的。

【4】網生@誌 zEUS.’Blog:《给博客添加 Google 自定义搜索》 :这篇文章介绍了整合Google搜索的详细步骤,包括申请,修改代码,等等,并且给出了代码范例。可操作性很强。