讨论一下Delphi实现搜索引擎的问题。 ( 积分: 100 )

Z

zbird

Unregistered / Unconfirmed
GUEST, unregistred user!
最近桌面搜索引擎很火,GOOGLE、MS、BAIDU都推出了自己的桌面搜索工具。
当然我不是要出个桌面搜索引擎和这些巨头火拼了。
只是最近对搜索引擎方面的东西比较感兴趣,想弄个桌面搜索的东西玩玩。
因为是做桌面开发,而在这个方面我对Delphi比较熟,所以考虑采用Delphi进行开发。
要自己独立实现整个搜索引擎系统当然是很不现实的一件事情了,最好的办法是寻找一个现成的搜索引擎开发包。
毫无疑问,在开源的搜索引擎开发工具中LUCENE绝对是最权威,使用最广泛的了。
不过这个东东是JAVA写的。虽然也现在被广泛的移植为其他语言,而且Delphi的移植版本也有。不过很可惜的是Delphi的移植版本是FOR .net的。换句话说,其实Delphi.net的LUCEN就是给lucene.net在Delphi.net下做了个简单的调试而已。
原生的Delphi开发库开来是没多大希望了。不过在win32下开发,可以将一些功能采用动态链接库的形式提供提供接口给Delphi调用。
C++的lucene,已经有了,而且看活跃程度还满高。不过再上网看了一下CLUCENE的评论。发现clucene的稳定性实在是有待提高,且存在内存泄露的问题。如果这样的话,在大规模索引的重建的时候程序必然会崩溃。clucene的实用价值也十分值得商讨。
对于win32下动态链接库的开发除了C++这些原生语言外还有一些其他的办法。PYTHON,一种目前很火的脚本语言。PYTHON代码可以通过特殊的编译方式编译成win32下的原生代码。PYTHON下的LUCENE移植版本有两个,不过他们的稳定性到底有怎么样,还值得研究。
其实除了,搜索引擎开发工具的选择以外。对于中文语言还存在分词的问题。不过目前开发包的问题都还没有搞定,这个问题就暂时不考虑了。
 
最近桌面搜索引擎很火,GOOGLE、MS、BAIDU都推出了自己的桌面搜索工具。
当然我不是要出个桌面搜索引擎和这些巨头火拼了。
只是最近对搜索引擎方面的东西比较感兴趣,想弄个桌面搜索的东西玩玩。
因为是做桌面开发,而在这个方面我对Delphi比较熟,所以考虑采用Delphi进行开发。
要自己独立实现整个搜索引擎系统当然是很不现实的一件事情了,最好的办法是寻找一个现成的搜索引擎开发包。
毫无疑问,在开源的搜索引擎开发工具中LUCENE绝对是最权威,使用最广泛的了。
不过这个东东是JAVA写的。虽然也现在被广泛的移植为其他语言,而且Delphi的移植版本也有。不过很可惜的是Delphi的移植版本是FOR .net的。换句话说,其实Delphi.net的LUCEN就是给lucene.net在Delphi.net下做了个简单的调试而已。
原生的Delphi开发库开来是没多大希望了。不过在win32下开发,可以将一些功能采用动态链接库的形式提供提供接口给Delphi调用。
C++的lucene,已经有了,而且看活跃程度还满高。不过再上网看了一下CLUCENE的评论。发现clucene的稳定性实在是有待提高,且存在内存泄露的问题。如果这样的话,在大规模索引的重建的时候程序必然会崩溃。clucene的实用价值也十分值得商讨。
对于win32下动态链接库的开发除了C++这些原生语言外还有一些其他的办法。PYTHON,一种目前很火的脚本语言。PYTHON代码可以通过特殊的编译方式编译成win32下的原生代码。PYTHON下的LUCENE移植版本有两个,不过他们的稳定性到底有怎么样,还值得研究。
其实除了,搜索引擎开发工具的选择以外。对于中文语言还存在分词的问题。不过目前开发包的问题都还没有搞定,这个问题就暂时不考虑了。
 
关注......................
 
不讨论了,根据以往的经验象这样的问题多半要成为死帖了。
考虑研究一下clucene了。
上网找了一下发现在linux下有用clucene做的桌面搜索工具,而且还是开源的。不过关于这个东东的介绍不是很多,估计也是个不太成熟的东东。
python的那的lucene就暂时不考虑了。python这东东也不难用,不过我还没太体会到脚本语言的好处。而且用python编译出来的原生代码需要带一些运行库。程序的大小得无故增加2M。
顺便说一下。
其实要捉这样的东东,在不考虑运行库的情况下,最好的选择还是JAVA或.NET。JAVA和.NET下的lucene资源比较丰富,能很容易的找到中文分词(JAVA的lucene已经带了,.net的不太清楚),及各种文件的分析器。而且JAVA和.net的内存管理都是又虚拟机管理的,不存在内存泄露的问题(呵呵,我想这也是CLUCENE内存泄露严重的原因了。JAVA和.net的根本就不用释放内存,但在C++里就不同了。在做移植的时候你必须去检查每个对象是否已经释放。因为在JAVA和.NET的LUCENE里面根本就没去处理这些)。
 
顶部