我目前正在将Java lucene用于其中一个项目并获得良好的性能。我正在寻找lucene的C / C ++选项,并在sourceforge上遇到了CLucene。
但是我想检查一下CLucene是否像Java lucene一样稳定可靠,并且拥有Java Lucene支持的所有功能,是否也获得了apache许可和积极支持?如果是,为什么我没有选择在apache Lucene网站上下载CLucene(在apache lucene网站上我有lucene.net选项)。
希望更多地了解CLucene在企业软件中的使用情况。
答案 0 :(得分:14)
CLucene在Apache License v2.0下提供,并在sourceforge托管。它不能从Lucene网站下载,因为CLucene是一个独立的项目。但是,Lucy是Lucene的C端口(目标是动态语言),可以从Lucene网站获得,因为它是Lucene的子项目。同样适用于Lucene.NET。
除非您被迫不使用JVM语言,否则我建议您使用Java版本。
所有开发都是针对Java版本进行的,然后有时会向后移植到其他端口,例如CLucene。因此,许多有用的功能仍然只在Java版本中可用(例如,在CLucene中不提供函数查询)。
关于性能,C / C ++有时可能比Java更快,但Java版本中有很多代码片段使用非常简洁的算法来提高性能,例如:
最后但并非最不重要的是,Java版本是测试最多的版本,并且在很多流量很高的网站上使用,例如LinkedIn或Twitter。
答案 1 :(得分:9)
CLucene稳定可靠,并且与Java版本(ASL)具有相同的许可证。它没有与Apache网站链接,因为该项目不属于ASF保护伞。
CLucene是Java Lucene的逐行端口,并且是本机代码(不在VM上运行并且在其他事物中执行它自己的内存alloc / dealloc),它通常比Java Lucene更快。一些基准(现在有点旧)表明了这一点。作为一个精确的端口,它与Java Lucene索引100%兼容,反之亦然。
使用CLucene的唯一缺点是它与目前的Lucene版本并不完全一致。
答案 2 :(得分:2)
Lucene的最新版本是5.2,并且自https://lucene.apache.org/core/5_2_1/core/org/apache/lucene/codecs/lucene50/package-summary.html#package_description列出的2.3.2以来对索引文件格式进行了重大更改。我不相信还有其他任何比CLucene更新的内容。 至于Lucy,该网站指出:这两个库在文件格式或API方面都不兼容,并且没有计划建立这种兼容性。