博客界面升级(重新实现【全站搜索】,比 Google 更准确地搜索评论)

  最近2周有不少读者反馈说:在匿名评论的时候,博客界面上会要求输入“验证码”。而且那个“验证码”非常难看懂。   在此俺特地声明:这个变态的验证码,【不是】俺加入的,而是 Google 的 BlogSpot 平台加入。某热心读者在其它的 BlogSpot 博客上进行测试“匿名留言”,也出现了验证码。   关于 Blogspot 平台的验证码,有如下几种可能: 1. Google 要加强打击“垃圾广告”(如果是这种情况,倒也无可厚非) 2. Google 通过增加匿名留言的难度,变相鼓励用户登录 Google 帐号(如果是这种情况,那就违背了“一切以用户为中心”的信条)
  十月中旬发那篇《博客界面升级——增加“界面定制”、“文章目录”、“自动刷评论”、“全屏显示”等》的时候,就已经有读者来抱怨,说俺不好好写博文,整这些界面干嘛。   所以,在此稍微解释一下:

  在俺这个博客,有很多读者是通过“博客的评论功能”进行交流。把“评论相关的界面功能”完善一下,可以提高大伙儿的效率(也包括俺本人的效率)。俺的效率提高了,才能有更多的时间写原创博文。套用一句老话就是【磨刀不误砍柴功】。(类似的观点,在去年的博文《磨刀不误砍柴功——聊聊个人 IT 基础设施的完善》也提到过)

  大约在3年前,俺就在博客侧边栏放置了一个“博客站内搜索”。调用的是 Google 和 Bing 的搜索接口。说白了就是利用“site 语法”来搜索某个域名下的内容(关于“site 语法”的使用,可以参见《如何挖掘网络资源》这个系列)。   原先这种方式,主要有如下几个缺点: 1. 无法精确地搜索“读者评论”(这是最主要的缺点,好多人提过。比如:无法搜索某个读者发过的所有评论) 2. 除了“关键字”,没有其它的搜索条件 3. Bing 的搜索质量比较差

4. Google 的搜索质量虽然比较好,但如果是基于 TOR 访问 Google,经常会碰到“变态的验证码界面”(具体原因参见《解答 Google 搜索的常见问题》)

  为啥俺非常看重“搜索读者评论”这一条?因为俺博客的评论,主要用途之一是:提供某种形式的“问答”。但是捏,大多数的问题,其实都被重复提问过多次了。每次回答这种“老调重弹”,就感觉很浪费时间、特别不爽。   这次全新实现的“站内搜索”,可以精确地根据“关键词、时间段、用户名”来对评论进行搜索。以后想要来俺博客提问的网友,建议先搜一下,说不定你要问的问题,之前已经有人问过了。

  首先,增加了一个“全站搜索界面”,网址是 https://program-think.blogspot.com/p/search.html   此界面上提供了三个搜索条件:“搜索关键词、关键词所在的位置、时间段” 对于【关键词所在的位置】,包括如下几个选项: 任何位置(这项类似与普通搜索引擎的行为) 博文内容 博文标题 评论内容(这项是根据关键词搜索评论) 评论作者的名称(这项是根据用户名搜索评论,针对那些“起了网名,但是没登录过的读者”) 评论作者的网址(这项是根据用户名搜索评论,针对那些“已经登录过的读者”)

  通过这个选项,就可以实现本文标题号称的【比 Google 更准确地搜索评论】。

  在评论区中,原先已经有两个“过滤按钮”,如今在这两个旁边,增加了一个“搜索按钮”。   点击此按钮之后,自动打开“全站搜索界面”,并且自动把相关的搜索选项都帮你填好。你只需等着出结果。   原先侧边栏有两个搜索框(分别对应 Google 和 Bing)。如今这两个去掉了,换成单一的搜索框——使用时,会自动打开“全站搜索界面”。
  再次唠叨一下:Google 的 Blogspot 平台只提供“客户端页面的定制”,【不提供】“服务端定制”。   所以,这次增加的“全站搜索”,完全依靠 JS 脚本来实现(苦逼得很)。好在 Blogspot 提供了某些 Feed(RSS/Atom)接口。俺就靠着这些接口,勉强实现了“全站搜索”。

  由于功能全部在客户端实现,性能肯定要打折扣——速度肯定比不上“Google、百度”之类的搜索引擎。一般而言,“如果你在墙外”或者“你的翻墙通道够快”,使用这个“全站搜索”应该没啥问题。反之,如果你在墙内并且翻墙速度很慢,用这个功能恐怕够呛

  不过捏,考虑到如今大伙儿的翻墙水平越来越高,搞定一个速度快的翻墙通道,应该不是太难的事情。   这次的时间仓促,俺没有考虑对搜索结果的优劣进行排序。目前只是按照时间倒序显示(最新的在最前面),然后把博主的留言放在其它读者留言之前。   对“搜索结果排序”有研究的同学,欢迎提建议 :)   由于新功能刚刚上线,Bug 难免。还望大伙儿多包涵。如能及时反馈 Bug,俺先行谢过。   另外,也欢迎大伙儿多提意见和建议。   “搜索功能”完成之后,还有另一个比较大的功能(也是很多读者提过的)——自动显示评论的“已读/未读”状态。这个涉及到“客户端存储”,而且需要的存储信息量比较大。俺还在考虑到底用 cookie 还是 HTML5 新增的“本地存储功能”(localStorage)——这两者各有利弊。   对 HTML5 的本地存储,俺还不太熟悉。在这方面有经验的同学,欢迎提建议。

俺博客上,和本文相关的帖子(需翻墙)

博客界面升级(增加“界面定制”、“文章目录”、“自动刷评论”、“全屏显示”等)
博客评论功能升级(增加“留言过滤”、“200条之后自动加载”等)
博客评论功能升级(引入 BBCode 语法),顺便分享一下实现方法