作者:不详 来源:JavaEye 酷勤网收集 2008-05-27
摘要
有人一定会问,Xapian支持中文分词吗?答案是不支持,外国人怎么可能会写中文分词算法呢?但是这并不要紧,我刚刚介绍过libmmseg这个用C++编写的中文分词算法。因此只需要做一点点工作,给Xapian打个小补丁把libmmseg集成进去就可以支持Xapian的中文分词了。
Xapian是一个用C++编写的全文检索程序,他的作用类似于Java的lucene。尽管在Java世界lucene已经是标准的全文检索程序,但是C/C++世界并没有相应的工具,而Xapian则填补了这个缺憾。
Xapian的api和检索原理和lucene在很多方面都很相似,但是也有一些地方存在不同,具体请看Xapian自己的文档:http://www.xapian.org/docs/
Xapian除了提供原生的C++编程接口之外,还提供了Perl,PHP,Python和Ruby编程接口和相应的类库,所以你可以直接从自己喜欢的脚本编程语言当中使用Xapian进行全文检索了。
此外Rails的开发者们再接再厉,针对Xapian封装了Rails插件,acts_as_xapian,请看:http://github.com/frabcus/acts_as_xapian/tree/master
使用acts_as_xapian之后,在Rails程序里面可以直接使用Xapian:
当然,有人一定会问,Xapian支持中文分词吗?答案是不支持,外国人怎么可能会写中文分词算法呢?但是这并不要紧,我刚刚介绍过libmmseg这个用C++编写的中文分词算法。因此只需要做一点点工作,给Xapian打个小补丁把libmmseg集成进去就可以支持Xapian的中文分词了。
目前关于Xapian的性能测试还没有人去做,因此还不清楚Xapian的性能如何,特别是对于Rails程序员来说,Xapian会不会提供比Ferret更好的性能呢?这一切有待进一步的探索了。
Xapian的api和检索原理和lucene在很多方面都很相似,但是也有一些地方存在不同,具体请看Xapian自己的文档:http://www.xapian.org/docs/
Xapian除了提供原生的C++编程接口之外,还提供了Perl,PHP,Python和Ruby编程接口和相应的类库,所以你可以直接从自己喜欢的脚本编程语言当中使用Xapian进行全文检索了。
此外Rails的开发者们再接再厉,针对Xapian封装了Rails插件,acts_as_xapian,请看:http://github.com/frabcus/acts_as_xapian/tree/master
使用acts_as_xapian之后,在Rails程序里面可以直接使用Xapian:
- acts_as_xapian :texts => [ :name, :short_name ],
- :values => [ [ :created_at, 0, "created_at", :date ] ],
- :terms => [ [ :variety, 'V', "variety" ] ]
acts_as_xapian :texts => [ :name, :short_name ],
:values => [ [ :created_at, 0, "created_at", :date ] ],
:terms => [ [ :variety, 'V', "variety" ] ]
当然,有人一定会问,Xapian支持中文分词吗?答案是不支持,外国人怎么可能会写中文分词算法呢?但是这并不要紧,我刚刚介绍过libmmseg这个用C++编写的中文分词算法。因此只需要做一点点工作,给Xapian打个小补丁把libmmseg集成进去就可以支持Xapian的中文分词了。
目前关于Xapian的性能测试还没有人去做,因此还不清楚Xapian的性能如何,特别是对于Rails程序员来说,Xapian会不会提供比Ferret更好的性能呢?这一切有待进一步的探索了。

