博客界面升级(重新实现【全站搜索】,比 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 语法),顺便分享一下实现方法

版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2014/11/custom-blogger-search.html

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store