MongoDB的全文搜索(FTS)现在与Lucene相比如何?提出这个问题的原因是我不确定:
a) 在大约6个月前,MongoDB的FTS实现仍处于测试阶段,我是否应该在生产环境中使用它。
以及
b) 因为Lucene使用Java,这将引入另一个运行部分。
不探讨一个程序员论坛可能不适合的长话题,我将尝试基本覆盖并阐述要点。
当进行广泛比较时,主要考虑的事情是:“XYZ”关系数据库引擎的全文搜索与Lucene相比如何。
因此,如果您考虑过这一点,并且具有使用上述产品内置的“全文”功能的经验,则应该将它们与MongoDB“全文”苹果进行比较。
简而言之,MongoDB提供了基本的全文检索功能,与关系产品中发现的功能没有太大的区别。如a:)所述,这些设施是新的,但比以前好得多,以前什么都没有。
在b:)中,Lucene以及衍生/对应产品(Solr / ElasticSearch等)应被视为完全不同的动物。在需要高级分词和词干处理、内置“更多类似此项”的设施以及搜索中的“facet counts”等情况下,单独的产品是必需品。
当然,有几种解决方案可用于在Lucene等中索引来自MongoDB存储的数据,甚至定制此过程也不难。但这将在您的基础设施中维护另一个移动部件。
因此,我认为这不需要比较MongoDB文本搜索与Lucene,因为它们存在的最终目的是不同的,只是取决于您的应用程序需要什么。选择最适合您的解决方案。
唯一需要补充的是,Lucene(和派生)系列是很棒的产品。不要回避尝试它们,至少进行评估。前面提到的点是在那里,有比任何“标准数据库文本搜索”更多的功率。此外,管理和学习曲线通常“没有想象的那么难”。玩起来,可能值得实施。
简而言之:是的,Lucene(Solr/ElasticSearch)是另一个需要考虑的部分。而且你要知道,我讨厌在我的系统中添加移动部件,我会尽力避免这种情况发生。但是,如果你想支持一种超出简单全文搜索的搜索方式,那么你就需要使用Lucene。我保证,当你逐渐熟悉它后,你将再也不会错过它了。
因此,简单的建议是:试试吧!你不会后悔的。