使用Lucene有哪些缺点?

6

我在考虑在我的项目中使用Lucene来进行快速搜索。我知道Lucene会创建自己的文件来存储所有的数据/索引。

我想知道使用Lucene有哪些缺点?是否存在任何缺点?

您是否需要对文件数据库进行任何操作,或者它可以在没有任何外部帮助的情况下正常工作?

P.S. 我知道还有Lucene .NET,我相信同样适用于那里的规则。

4个回答

10

Lucene很棒。非常灵活,速度惊人,并且具有坚实的API。邮件列表非常有帮助。

文件需要进行一些维护,但可以使用提供的工具来完成。首要重点是偶尔优化索引,但只有在您经常更新索引时才需要这样做。

我建议您也研究一下Solr。它本质上是一个Web应用程序和工具,位于Lucene之上。它使创建新索引,保持其优化以及为可扩展的搜索集群提供主/从同步稍微容易一些。当然,这取决于您的实际需求。

举个人的例子,我曾经为一家大型知名游戏公司维护一个搜索索引。该索引使用多种语言(全球范围内)和语境中的数十万个条目。它每天在集群上执行一百万次搜索,几乎不使用任何CPU,而且占用合理的内存量。它已经通过负载测试达到了每天约3亿次搜索,只需将更多的盒子添加到群集中即可线性扩展。 Solr和Lucene是主要的工具。

如果必须给出缺点,那就是学习曲线。还有很多需要理解的内容,如果您想要真正优化的解决方案,您需要很好地了解它。然而,如果您要自己做搜索工具,使用任何搜索工具都会发生这种情况。文档,维基和邮件列表提供了足够的支持帮助您逐步学习。


3

Lucene存在可扩展性问题。随着索引越来越大,其性能会下降。


2
这不是Lucene特定的问题,任何索引系统都是如此。 - bdargan

2

我对Lucene的经验有限,但到目前为止它表现得很好。从业务角度来看,我能看到的缺点主要是:

  1. 我必须积极说服我的老板使用Lucene,因为默认情况下我们会使用SQL Server。为了转换,我必须毫无疑问地证明Lucene在我们使用场景中的性能比SQL Server更好(而不仅仅是类似)。我想这一点归结于“谁也没有因为购买IBM设备而被解雇”的综合症。
  2. 特别是Lucene.Net的持续开发/错误修复目前存在疑问,如果没有这一点,再次进行更艰难的销售。我希望社区能够团结起来。

2
Lucene为许多人和公司做出了巨大贡献。但是,具体情况因人而异。 Lucene的评分模型可能存在问题-它使用TF / IDF和布尔评分的组合,而其他IR工具使用更强的概率BM25。但是,您可能会使用Lucene多年,并且搜索结果足够好。此外,将其扩展到数百万个文档并不容易。

这归结于您特定的用例。最好开始使用Solr进行测试,并查看它是否符合您的需求。


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