我在考虑在我的项目中使用Lucene来进行快速搜索。我知道Lucene会创建自己的文件来存储所有的数据/索引。
我想知道使用Lucene有哪些缺点?是否存在任何缺点?
您是否需要对文件数据库进行任何操作,或者它可以在没有任何外部帮助的情况下正常工作?
P.S. 我知道还有Lucene .NET,我相信同样适用于那里的规则。
我在考虑在我的项目中使用Lucene来进行快速搜索。我知道Lucene会创建自己的文件来存储所有的数据/索引。
我想知道使用Lucene有哪些缺点?是否存在任何缺点?
您是否需要对文件数据库进行任何操作,或者它可以在没有任何外部帮助的情况下正常工作?
P.S. 我知道还有Lucene .NET,我相信同样适用于那里的规则。
Lucene很棒。非常灵活,速度惊人,并且具有坚实的API。邮件列表非常有帮助。
文件需要进行一些维护,但可以使用提供的工具来完成。首要重点是偶尔优化索引,但只有在您经常更新索引时才需要这样做。
我建议您也研究一下Solr。它本质上是一个Web应用程序和工具,位于Lucene之上。它使创建新索引,保持其优化以及为可扩展的搜索集群提供主/从同步稍微容易一些。当然,这取决于您的实际需求。
举个人的例子,我曾经为一家大型知名游戏公司维护一个搜索索引。该索引使用多种语言(全球范围内)和语境中的数十万个条目。它每天在集群上执行一百万次搜索,几乎不使用任何CPU,而且占用合理的内存量。它已经通过负载测试达到了每天约3亿次搜索,只需将更多的盒子添加到群集中即可线性扩展。 Solr和Lucene是主要的工具。
如果必须给出缺点,那就是学习曲线。还有很多需要理解的内容,如果您想要真正优化的解决方案,您需要很好地了解它。然而,如果您要自己做搜索工具,使用任何搜索工具都会发生这种情况。文档,维基和邮件列表提供了足够的支持帮助您逐步学习。
Lucene存在可扩展性问题。随着索引越来越大,其性能会下降。
我对Lucene的经验有限,但到目前为止它表现得很好。从业务角度来看,我能看到的缺点主要是:
这归结于您特定的用例。最好开始使用Solr进行测试,并查看它是否符合您的需求。