[立此存照] 悼念Google

2009年06月24日 21:43

2009年6月24日 21:30

Google.com URL被列入黑名单,Google相关服务全部无法使用。

出离愤怒,不想多说。

Update: 23:05 貌似恢复了。

谷歌高层:正在调查,不做品论

Update2: 另存题图,有额外惊喜。

[半技术]为聊天记录查看增加了搜索功能

2009年06月24日 14:43

我们的BT群原先一直是使用Google talk服务器的,但是前一段时间不知道怎么回事,非常不稳定,经常漏消息。在忍无可忍的情况下,我自己搭建了Jabber服务器,改造了群机器人,让它挂接到自己的服务器上,并且让大家都加入了新的群。消息侧漏的问题终于得到了解决。

凡事有得必有失。自己DIY有足够的自由度,但是却缺少了很多支持服务。比如原来用GTalk服务器的时候,聊天记录会由gmail自动提供(还附带有很强大方便的搜索功能),而自己搭建服务器之后,这个便利就没有了。为了方便大家,我用pylons写了一个很简单的聊天记录查看的功能,算是解决了一部分的问题。

但是没多久问题就来了,以前大家可以在gmail里方便的搜索以前的信息,但是我的聊天记录查看并没有提供搜索的功能,所以很多以前聊过的话题想回顾就比较麻烦。我自己也感觉到了不便。于是在前一段时间的忙碌之后,我抽了几天的空,完成了聊天记录的搜索功能。

本来想好好研究一下写一点东西的,不过现在工作越来越忙,已经不太有精力去做细致的研究了。所以我想还是写一点半技术的话题,算是给需要的人抛砖引玉吧。

这次我采用的是一个纯Python的搜索框架Whoosh。原来是想用更著名的Lucene的(我还曾经买过一本Lucene In Action的书,本来想正好用上的),不过Lucene跟Python的结合非常困难。确实有一个pylucene的方案,但它是使用代码生成器生成python接口然后使用的,使用部署上的繁琐且不去说它,这还使得很多针对Lucene的中文分词库无法使用。这一点很麻烦。为了避免麻烦,另外考虑到我的程序规模不是很大,所以还是选用了一个纯python的框架。从我找到的评论来看,Whoosh的性能在纯python的框架中还是比较出色的。

总的来说,Whoosh不是一个知名的框架,因此对它的支持也就少得可怜。在中文搜索世界非常重要的中文分词,就得我自己来解决了。我在网上找了一个开源的中文分词库:pymmseg-cpp,它是一个C++的实现,然后做了一层Python封装,效率还可以,接口也算简洁。我依据这个分词库,写了一个用于Whoosh的中文分词分析器:ChineseAnaylzer,然后将这个分析器挂接到框架中,就可以使用了。另外要提一句,pymmseg-cpp似乎是基于字典的,它自带的那个分词字典不太好用,我从网上重新找了一个比较完整的分词字典,用脚本整理成了它需要的格式,替换掉了它原来那个,然后就感觉好多了。

因为Whoosh没有默认提供,我还自己写了一个highlighter,用于以HTML格式高亮显示搜索到的结果片段。

剩余的部分基本上采用Whoosh提供的示例代码就可以搞定了。

另外,部署的时候,因为indexer和searcher的运行环境不同,还要考虑路径的问题。尤其是自己实现的几个模块的路径问题。我的解决方法比较简单,就是把自己实现的模块及其依赖都扔到virtualenv的site-package里(用softlink的形式),这样就不怕加载不到了。当然这不是一个干净的解决方法。

另外为了提高index的效率,我为indexer实现了增量索引的功能,然后使用crontab每隔几分钟索引一次。以确保最新的内容能及时被搜索到。

现在这个搜索功能基本上可用了,大家反映暂时还不错。

当然因为时间的缘故,里面还是用了一些不干净的做法,也算是理想和现实的冲突吧。

最后我想提一句,很多人说到搜索,大概会立刻想到搜索框架。其实对于一些小型的应用,是可以找到一些更加简单的方法的,比如Linux提供的grep,对于文本的搜索还是挺不错的。实际上我确实想过这个方案(我的这个应用完全是对文本文件的操作,跟数据库无关),不过这一次为了接触一下真正的搜索框架,而没有采用。事实上我觉得对于我们这样的纯文本应用,grep完全是可以考虑的。至于语法的部分,实现一个QueryParser做一下转换,应该可以解决大部分的问题。

最近真热闹

2009年06月19日 14:40

中国互联网维护日 回应

绿坝 回应

谷歌传播淫秽色情和低俗信息 回应

但凡扯上官方二字,人民(起码是网民)必定站在其对立面。这不能不说是一个非常可笑的情况。做政府能做到这个份上,也不容易了。

6月4日,星期四,晴

2009年06月04日 09:42

这一天终于来了。虽然有人希望这一天不存在,但它终究还是会来的。

早上听音乐早餐的广播,主持人有意无意的说了一句“89年的同学”,听得我心头一热。尽管什么也没说什么也不能说,但我知道,这样就够了。

昨天看到有人批评我们只会玩数字游戏。在这种环境下,不玩数字游戏还能做什么呢?既然不能说什么,那不如就留下一个数字密码,让好奇者自己去探索密码背后隐藏的真相。以这种方式,将信息传承下去。

史书记载:仁帝三年,六月乙酉,晴,朝野无事。乙辰,仁宗废。

今天一篇,明天一篇

2009年06月03日 14:26

本来是想等到明天再写点什么的。不过今天早上看到的一长串名单耳熟能详的网址让我决定还是先写点什么。

这几天,中国的互联网可以用一个字概括:折腾,那是相当的折腾。现在的控制,已经从“危险网站”扩大到了很多非常大众的网站了。而这一控制的结果,也可以算是成效显著:很多原本什么都不知道的80后90后,从这些变化中感觉到了什么,开始打听到底发生了什么事。而我们知道,谣言的传播速度,是超乎想象的。

这是一个非常好的结果。我曾经担心过,有些事情会像投入水池中的小石子一样,荡起一波涟漪,然后消失,就像从来没有存在过一样。实施证明,我的担心纯属多余,每年的某天,某些希望别人忘记的人们,总是会用一些非常愚蠢的办法,来提醒大家事情的存在。

那么,就让我们记住它,一直记住它,直到某天,真相公布于众时,让大众给出自己的判断吧。

而我越来越觉得,这一天不是那么遥远了。

附:

被影响的网站(更新中)

Design downloaded from free website templates.