Archive for November, 2006

让ruby ferret(acts_as_ferret)支持中文分词程序.

Thursday, November 23rd, 2006

首先本文只是说说如何将你原有的分词程序与ferret集成,而不是说中文分词的文章,本文也不提供中文分词程序下载如果您为了这两个目的可以不用继续读下去了。。
做搜索特别是中文搜索肯定会遇到中文分词问题,自己写一个搜索程序没这精力估计也没这能力,所以还是用还是用些Lucene ,nutch之类的再hack一下估计能完成初期的大部分要求(以后?如果有以后的话再自己发展或开发吧。刚开始的时候要学会行进中开火,用最小的成本换取最大的收益)
因为不喜欢java所以Lucene或nutch不在考虑范围之类,最近玩ruby所以找到了ferret一个Lucene的ruby实现。主要代码全部使用C编写根据网上文档及个人测试性能还是很不错的:
Ferret is a high-performance, full-featured text search engine library written for Ruby. It is inspired by Apache Lucene Java project.
官方wiki:http://ferret.davebalmain.com/trac/
像这些程序一般不支持中文分词所以直接拿来是不能用的,最简单办法是写一个自己的分词算法或是把已有的集成进去。怎么实现呢?
经过两天的坚苦尝试后终于可以用了,虽然感觉不是那么好,但是至少可以用了不是吗?两天来的艰苦努力只得出一个结论:
很多时候我们放弃最简单的途径而去追求所谓的完美,到头来又回到原点。
最初的想法是在添加文档(add_document)或进行搜索的时候先把传进来的数据进行分词,再传给ferret,但是想来想去觉得这种方法不是很完美,还有如果高级搜索的时候还要去分析关键字,觉得麻烦,被我否了(后来还是用了这种方法)
以下内容没什么用,只是记录我的演讲过程和源代码阅读结果。
因为它原来都是用C写的,那就自己写一个Analyzer吧,OK,在短暂的看了看它的代码后,发现有些复杂(其实并不是那么复杂,只是最初不熟悉怎么写ruby扩展,加上者的代码风格和我的相去甚远有些东西没看明白),于是想偷懒一下修改或是扩展.
最简单尝试:
def MyAnalyzer < Analyzer
def token_stream(field, str)
#在这里将str分词,分成空格间隔的字符串再给WhiteSpaceTokenizer分解
return WhiteSpaceTokenizer.new(str,@lower)
end
end
想法不错,但是add_document的时候token_stream(field, str)传进来的str始终是空的,怎么回事?一个晚上学ruby ext的写法,然后分析原来的WhiteSpaceAnalyzer再到GDB源程序,终于明白了,原来它在构建token_stream是这样子的token_stream(field_name, “”),后面的代码再设置doc的内容到text属性里去,再通过text进行处理(C代码就不贴了,忘记在哪懒得找了).否了。
回到hack C程序上,改AsciiWhiteSpaceAnalyzer上去,发现在ts_reset()函数里可以取到输入的文档内容,于是在这里分词吧。看上去可行。可是结果就是搜索不出结果,继续读代码原来这样改动了document的内容,结果是能正确分词,但是在Index中是记录的token的位置,所以搜索不出结果。否了。
现在呢?两天过去了,没有什么实质进展只是对于程序大概了解了。现在叫我自己写一个Analizer已经不是大问题了,可是我原来的分词算法有些复杂,加载字典也需要一些时间我不想每次都加载,想做个socket […]

vim+rails.vim ruby on rails (ror)开发的利器

Monday, November 13th, 2006

对于工具我没有什么多的偏好,不过一个工具用久了确实是会有一定依赖性,有时候换别人的机器用的时候都会觉得不习惯。
ruby on rails开发时用什么工具呢。最初我用radrails,我忍受住了eclipse那种巨慢的速度以及巨大的内存占用,最后还是没忍受住需要不停的在左边项目文件导航中不停找文件的痛苦(因为ror分model,view和control,不停在文件间切换太痛苦了。)以及打开过多文件而tab不够用,需要不停的拉来拉去。。。
找啊找啊。。。
看到这个视频我就知道自己找的是什么了。对,就是它了。VIM。
最大的好处就是可以自由方便的在MVC各文件中方便的切换。。。。还集成各种常用的指令。内存占用小,速度快。。再安装一下html之类的插件,基本可以只在这里面就可以完成所有工作(现在我就是这样子的。)强烈推荐。。。。。
原来我就装了vim7 for win的。。再从这里下载 rails.vim放到解压到vim程序的目录(就是vim.exe所在的目录。包里面有两个目录,plugins和docs)安装完成了。
如何使用呢。
1:新建项目,打开vim,在命令模式输入:Rails 项目名
2.打开原有项目:只有用vim编辑任何项目内的文件,插件将自动识别项目。
命令说明:
启动webrick服务器:Rserver 关闭: Rserver!
预览: Rpreview (在相关环境下将预览当前编辑的方法)
MVC的切换:
最简单的就是:R命令在MVC中切换。。
比如在controller的medias/list方法中按:R将换到list.rhtml(就是方法的视图文件去了,是不是很方便不用一个个文件去找了吧)
还可以通过:Rcont controller_name编辑某个controller,Rmodel,Rview,Rlayout等。
如果编辑其它文件:可以用Redit database等
还有Rfind之类的命令。。。Rextract则是把某个view中的代码extract到某个partial文件中去,相当方便。
详细说明参见安装目录docs下的rails的帮助。
其它插件参考:
http://wiki.rubyonrails.org/rails/pages/HowtoUseVimWithRails

cfsoo.com for mobile正式发布.

Friday, November 10th, 2006

采风搜娱(cfsoo.com)手机版正式发布,欢迎使用手机访问:http://cfsoo.com来访问采风搜娱。(wahahaha,又是大干一夜,不过一夜时间实现了简单的手机版本,感觉很是不错。。)

请使用手机访问 http://cfsoo.com

我为什么要这做玩意呢?因为先前几年一直在电信行业混,对于手机资源一张图片或是一首铃声收费两元甚至30元所谓的包月深感昂贵,看那些sp乱搞很是不平,于是产生了这个想法。。。
什么?你说我的资源有版权问题?噢,是吧。不过像百度一样,我的也是:
百度MP3提醒您:根据用户指令,百度的搜索引擎系统会以非人工方式自动生成到第三方网页的链接。“百度”自身不存储、控制、编辑或修改被链接的第三方网页的信息。百度高度重视知识产权保护,并制定了旨在保护权利人的合法权益的措施和步骤,当权利人发现在百度生成的链接所指向的第三方网页的内容侵犯其著作权时,请权利人向百度发出“权利通知”,百度将依法采取措施移除相关内容或屏蔽相关链接。详见百度权利声明
所以我也不知道版权不版权了。。。呵呵。。。

cfsoo.com,让彩图不再昂贵,令天籁不再遥远

Thursday, November 9th, 2006

采风搜娱(cfsoo.com),是一个全新的免费手机娱乐资源搜索平台(免费使用,资源免费下载),每天由爬虫更新众多媒体网站的数据,为访问访客提供最新最好的手机娱乐资源。集合众多web 2.0元素为访客提供良好的使用体验。
功能预览(欢迎提意见):

.
每天追踪最新最热门的资源:

再一次,但是我相信会是最后一次的…

Sunday, November 5th, 2006

以前说过,人有很多想法并不是什么好事,特别是你自己觉得特别好的一个想法,但是只停留在你脑子里,一直不去实现。。。而最痛苦的事情莫过于你的想法被别人先实现出来了,这世界这么大,这么多人,别人想得跟你一样也是正常的。。。今天又被严重打击了一次,不过我相信这是最后一次。。。

51.net真是垃圾。。。

Sunday, November 5th, 2006

这个blog用的空间是51.net提供的,我用的B类套餐400/年,从2001年开始使用,有好些年了。。可这么多年51.net 一点长进都没有,服务器的速度越来越慢了,问题越来越多了,服务越来越差。。。这次是comments表坏了,这种事情已经出现过很多很多次了(我也不知道什么原因),我的那些回复啊。真后悔当初没把这些移动自己的主机上(当然我自己也有责任,为什么备份的时候总是不备回复表呢..)。。。看来还是要考虑把主机改到自己的服务器上了。。。

很抱歉《Getting Real》的作者不是Seth Godin。

Thursday, November 2nd, 2006

很抱歉,我错了。