阅读更多

14顶
1踩

编程语言

原创新闻 Xapian - C++全文检索程序

2008-05-27 13:18 by 见习编辑 robbin 评论(6) 有15965人浏览
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:

    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更好的性能呢?这一切有待进一步的探索了。
14
1
评论 共 6 条 请登录后发表评论
6 楼 Julian 2009-06-29 09:34
呵呵,看Infoq上豆瓣的cto说他们的搜索引擎早就从sphinx迁移向xapian了。xapian性能真的很值得关注。
5 楼 yapi 2008-07-16 14:16
linux下用过xapian + cgi
现在ruby也可以了
4 楼 achun 2008-05-28 22:39
而且刚刚简单看了一下xapian,他仅仅是以lib的形式发表的。
这个太单薄了。
Sphinx可是服务器级别的。而且有mysql的扩展支持。
就平这一点,Sphinx用起来就更安逸。
3 楼 achun 2008-05-28 22:28
robbin,c/c++的全文开源检索可不是你说的空白。
http://www.sphinxsearch.com/
就是比较优秀的一个,虽然目前不支持中文分词,不过中文搜索是支持的。
还有我们国人(名字忘了)做的一个mysql插件的支持中文分词的也很火的。

robbin大概是在JAVA中沉迷太久了吧.
跳出JAVA世界更精彩的。
2 楼 fredzhang 2008-05-27 21:07
关于c++的全文检索,xapian并不是唯一的,也不是最好的选择,国人的firtex值得注意。
它的整体代码我分析了一遍,应当说,代表了索引到目前为止最新的研究成果。比lucene,xapian的速度要快得多。当然还不太成熟,但是,既然全文检索对web2.0如此重要,为何不自己动手来完善呢?
此外,关于中文分词,也可以用中科院分词系统ICTCLAS的免费社区版
1 楼 powerfj 2008-05-27 20:19
robbin还是见习编辑

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 为什么说微软开源 .Net 也拼不过 Java?

    .Net 服务器端源代码的开源对于微软而言是很重大的一步。然而这个动作的影响有限,也必须说 .Net 距离追上 Java 的开放源代码可能还要很长一段时间。 关于 .Net 开放源代码的计划,微软副总裁 S. Somasegar 曾提到,.Net 作为 Java 的替代平台,微软希望的是藉由公开 Windows 技术源代码来建立广大的开发者族群。 在微软...

  • Java对大中小型系统都适用

    Java对大中小型系统都适用,只要搭配不同的操作系统、应用服务器等等,大到银行综合信息系统、全国全省的统一应用系统,小到手机游戏,Java可以大小通吃,来者不拒。尤其是中国政府的重要系统,全没有.net的份,为啥?你不给我看家底,我怎么知道你有没有留了后门,改天偷偷溜进我家?   .net照顾中小型应用毫无问题,而且开发速度快,作为用户,付了钱很快能看到回报,当然欢喜。大型应用么,.net是不是

  • JAVA 和.NET在安全功能的比较

    本文根据Denis Piliptchouk的文章翻译、摘录而来,有些术语翻译不太好理解,还请参考原文。 第一部分 安全配置和代码封装 安全配置 两个平台的配置都是通过XML或纯文本文件,两个平台最大的区别在于处理安全配置体系的方式不同。 在.NET平台,有图形接口和命令行二种方式来修改安全配置参数。Mscorcfg.msc是图形接口方式,Caspol.exe提供了命令行方式,适用于批处理或...

  • java比.net活得久的原因分析

    我现在在用java,但很久很久之前,我是一个.net的开发者,其实在桌面软件开发为王的时代,我觉得.net的开发环境和.net framwork,确实比java好很多。java要学的东西要比.net多很多。 那么为什么我现在改用java了呢? 我归结于下面几点: 1、假如是做windows桌面,.net远胜于java。在安卓还没有出来之前,其实我是看好.net多于java的。但是自从安卓和苹果出来之后,windows桌面应用开始没落。web、ios、android成为了三大前端主流架构,windows

  • .net java效率,java和.net对于xslt处理性能对比,java大幅领先 | 学步园

    现在正在做一套基于存xml的网站架构,基于.net,其中有个核心模块是用来动态合成xml与xslt成html,发现性能低下到不可忍受的地步,做了一个xslt解析器缓存容器,发现初始话的时候还是很耗时,对于一个多皮肤的网站来说缓存所有skin也是不可想象的,所以本身性能也是需要考量的一个重要方面。经简短测试,java领先.net 3倍左右,两者都没有经过任何优化,同一机器,同一网速,.net分别采用...

  • .NET的迷途:为何这门昔日王者遭遇冷眼?

    现状简述昔日的王者.NET,如今似乎在技术舞台上遭遇了些许冷眼。曾经,它以其高效、稳定和微软的强大支持而备受青睐。然而,随着编程语言的多样化和开源文化的兴起,.NET似乎不再是开发者的首选。这背后隐藏着怎样的故事?让我们一起揭开这层神秘的面纱。开篇:.NET的辉煌与挑战.NET曾是企业级应用开发的标杆,C#语言以其优雅的语法和强大的功能赢得了无数开发者的心。但随着时间的流逝,一些开发者开始转向其他...

  • .net java 开源_为什么说微软开源 .net 也拼不过 java?

    .Net未来走向仍要看微软放手的程度,但至少他们踏出了正确的一步Java虚拟器软体贩售商执行长提到:「科技社群所扮演的角色也需要持续的观察,到底他们能决定.Net的未来,还是这一切仍是由微软操控?」:「微软对于开放源代码的努力受到了服务器的限制,他们应该要开放客户端的技术,如同(为了建造丰富介面所使用的程式模型)一般。但毕竟微软真正在行的其实是建立模型,而不是开源。相比起来,Java的工具像是、则...

  • .Net与JavaWebB/S开发区别优劣

    .Net 开发工具:visual studio 开发语言:C# 数据库:SQLServer 服务器:Windows Server 部署工具:IIS MVC框架:MVC3.0+ ORM:FrameworkJava 开发工具:eclipse,myeclipse 开发语言:Java 数据库:MySQL,Oracle 服务器:Linux,Windows Server 部署工具:Tom

  • 软件开发平台之争:NET VS Java,谁是更好的选择?

    作为软件开发新手,为自己选择未来职业生涯中将使用的平台并不容易。掌握任何一种编程语言都会花费大量的时间和精力,而这些恰恰是你最不想浪费的。选错平台可能会需要改变知识面来胜任工作,这让人们倍感压力。 在此,我帮你将选择缩小到以下两个选项:Java或者.NET。这已经是一个巨大的进步了,这两种选项都算是成功。Java和.NET都很稳定,可以用于企业级别的开发,这意味着你可能会就职于一家拥有大量资源和机会的大公司。 先来看看就业市场!截至2020年4月,Monster.com列出了超过4.1万份...

  • .NET与JAVA的区别【完整版】

    .NET与Java的这种相似为网站管理系统的开发提供了便利,如果您掌握了C#,那么,掌握Java这个语言几乎是不费什么力气的,需要花费时间的只不过就是熟悉彼此的类库。.NET是.NET Framework,Java是J2SE。学习这两者的理论基础都是面向对象理论。所以,一名有着面向对象理论基础的人是很容易掌握.NET和Java的。   简介   .NET是微软推出的一种新的软件运行

  • .Net和Java的执行性能比较

    首先,我个人不是那种执着于语言之争的那种人,不过今天测试了下Java和C#的执行效率。 测试计算100000000次PI值的代码如下: C#的代码: using System; public class CalcPI {  public const int Count=100000000;  public static void Main(string[] args)  {

  • java .net 性能,评测报告:.NET的性能仍然远远落后于Java (转)

    评测报告:.NET的性能仍然远远落后于Java (转)[@more@]评测报告:的仍然远远落后于:namespace prefix = o ns = "urn:schemas--com::office" />每个人都看过各种不同的benchmark,有证明.NET比Java快的,也有证明Java比.NET快的。在某些人的手里,benchmark是一面魔镜,透过它能看到想看的东西。所以,当这位...

  • 旧话重提:.Net历史简介以及与Java对比

    旧话重提:.Net历史简介以及与Java对比

Global site tag (gtag.js) - Google Analytics