Ferret Lucene 的 ruby 实现相当强大,但是 2008 年的在线讨论似乎表明 ferret 存在许多稳定性问题并且会定期出现段错误。今年有 10 次左右的提交,所以该项目的活动非常少。
Ferret是否足够稳定,可以在生产中使用?
似乎社区已经从 Ferret 中撤出,两个主要竞争者是 Sphinx 和 Apache Solr。
虽然我没有任何确凿的证据表明“社区后退”(是的,它是主观的),但它背后似乎没有太多惯性,我认为还有更多功能丰富和成熟的选择(同样,Sphinx 和 Solr仅举几例)。
半年前(2009 年 7 月)我将它用于一个项目。它是一个节日的数据库,所以它只运行了大约 10 天(大约每分钟 20 次查询,每小时更新 50 次),我遇到了一些问题。很少有索引有问题,我不得不重建它,而且服务器崩溃了几次。那时我没有时间切换到其他东西,所以我只是添加了简单的 cron 脚本,它每分钟检查一次 ferret 服务器是否正在运行,如果没有,它会启动它。
但是我不知道它现在如何工作(我什至不知道是否有更新的版本)。
现在我正在考虑切换到不同的东西,但我稍后会研究这个。
这取决于您的需要。我已经运行 Ferret 3 年了,过去几个月有一个相当复杂的 Ferret 部署。我在生产中从来没有崩溃过,但是你必须小心你的部署。例如,您必须绝对确保您没有多个作家,但这并不难。如果您想使用自己的过滤器和分析器进行自定义,您可以,但您必须先进行测试并确保您不会遇到奇怪的问题(我只是遇到了一个,我认为已经解决了)。关键是,如果您小心,您可以进行良好的部署,没问题。
Ferret 允许您在管理索引中的文档时非常灵活和可定制。您可以增量删除和更新文档和字段,这在 Sphinx 中很难做到。您还可以非常轻松地将权重分配给不同的字段。您可以轻松控制单词的索引和搜索方式。我认为如果你想灵活地构建你的新应用程序,并想尝试不同的方法来索引单词和权衡字段,那么 Ferret 的易用性是一个胜利。
我从来没有用过狮身人面像。我听到了很多关于它的好消息,并且它正在积极开发(与 Ferret 不同)。但是我的应用程序需要非常细粒度和频繁的增量更新,所以我被 Ferret 困住了。