我正在考虑在我的项目中使用Lucene进行非常快速的搜索.我知道Lucene创建了自己的文件,它保存所有的数据/索引.
我想知道使用Lucene的缺点是什么?有吗?
您是否必须对文件数据库执行任何操作,或者在没有任何外部帮助的情况下工作得很好?
附:我知道还有Lucene .NET,我打赌同样的规则适用于那里.
解决方法
Lucene很棒.非常灵活,令人惊讶的快速,以及可靠的API.邮件列表非常有用.
这些文件确实需要一些维护,但可以使用提供的工具完成.最重要的是偶尔优化索引,但只有在定期更新索引时才需要这样做.
我建议也要考虑Solr.它本质上是一个位于Lucene之上的webapp和工具.它使创建新索引,保持优化以及为可伸缩搜索集群提供主/从同步变得更加容易.当然,这取决于您的实际需求.
举个例子,我曾经为一家知名的大型游戏公司维护一个搜索索引.该索引拥有数十万种多语言(全球)和语言环境的条目.它每天在集群上执行一百万次搜索,几乎不使用任何cpu和合理的内存量.它已经在我们拥有的硬件上进行了大约3亿次搜索的负载测试,并且可以通过简单地向cluser添加更多的盒子来线性扩展. Solr和Lucene是这方面的主要工具.
如果我不得不给出一个缺点,那就是学习曲线.有一点需要理解,如果你想要一个真正优化的解决方案,你需要很好地了解它.但是,如果您自己执行此操作,则会使用您使用的任何搜索工具.文档,维基和邮件列表为此提升提供了大量支持.