MongoDB全文搜索和Lucene有什么区别?

15

MongoDB的全文搜索(FTS)现在与Lucene相比如何?提出这个问题的原因是我不确定:

a) 在大约6个月前,MongoDB的FTS实现仍处于测试阶段,我是否应该在生产环境中使用它。

以及

b) 因为Lucene使用Java,这将引入另一个运行部分。


2
只是为了明确,Lucene 不仅适用于 Java 环境。.NET 和 C++ 版本也可用。 - yaoxing
2个回答

40

不探讨一个程序员论坛可能不适合的长话题,我将尝试基本覆盖并阐述要点。

当进行广泛比较时,主要考虑的事情是:“XYZ”关系数据库引擎的全文搜索与Lucene相比如何

因此,如果您考虑过这一点,并且具有使用上述产品内置的“全文”功能的经验,则应该将它们与MongoDB“全文”苹果进行比较。

简而言之,MongoDB提供了基本的全文检索功能,与关系产品中发现的功能没有太大的区别。如a:)所述,这些设施是新的,但比以前好得多,以前什么都没有。

b:)中,Lucene以及衍生/对应产品(Solr / ElasticSearch等)应被视为完全不同的动物。在需要高级分词和词干处理、内置“更多类似此项”的设施以及搜索中的“facet counts”等情况下,单独的产品是必需品。

当然,有几种解决方案可用于在Lucene等中索引来自MongoDB存储的数据,甚至定制此过程也不难。但这将在您的基础设施中维护另一个移动部件。

因此,我认为这不需要比较MongoDB文本搜索与Lucene,因为它们存在的最终目的是不同的,只是取决于您的应用程序需要什么。选择最适合您的解决方案。

唯一需要补充的是,Lucene(和派生)系列是很棒的产品。不要回避尝试它们,至少进行评估。前面提到的点是在那里,有比任何“标准数据库文本搜索”更多的功率。此外,管理和学习曲线通常“没有想象的那么难”。玩起来,可能值得实施。


@heinob 似乎经常出现。一般的经验法则是,不要将“电锯”与“园艺剪刀”进行比较,并且不要使用“电锯”修剪树篱,如果你想要砍倒一棵树,那就去吧。但我相信你已经同意了 ;) - Neil Lunn
...并且决定哪一个最好,总是一个很好的开始,先在手中拥有两者之一。 - heinob
也许这个链接可以帮助快速获取数字 - http://www.openwebspider.org/2015/04/03/full-text-search-mysql-vs-mongodb-vs-sphinx/ - Mahesh

17

简而言之:是的,Lucene(Solr/ElasticSearch)是另一个需要考虑的部分。而且你要知道,我讨厌在我的系统中添加移动部件,我会尽力避免这种情况发生。但是,如果你想支持一种超出简单全文搜索的搜索方式,那么你就需要使用Lucene。我保证,当你逐渐熟悉它后,你将再也不会错过它了。

因此,简单的建议是:试试吧!你不会后悔的。


同意。为什么不呢。 - Neil Lunn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接