在我的项目中,整个搜索和内容列表都依赖于 Lucene。我没有遇到任何性能问题。尽管如此,该项目仍处于开发阶段,距离生产还有很长的路要走。
我必须在大型结构完成项目之前找出性能问题。过度使用lucene是否可行?
在我的项目中,整个搜索和内容列表都依赖于 Lucene。我没有遇到任何性能问题。尽管如此,该项目仍处于开发阶段,距离生产还有很长的路要走。
我必须在大型结构完成项目之前找出性能问题。过度使用lucene是否可行?
例如,我在 Lucene 索引中有大约 3 GB 的文本,它的运行速度非常快(搜索、过滤器和排序的响应时间为毫秒)。该索引包含大约 300,000 个文档。
希望这为您的担忧提供了一些背景信息。这是在生产环境中。
Lucene 非常成熟,并且在它的设计目标上具有非常好的性能。但是,它不是 RDBMS。您可以进行的用于提高性能的微调量比数据库引擎更有限。
在以下情况下,您不应仅依赖 lucene:
我会说,如果您的项目大到可以聘请 DBA,您应该使用一个...
性能方面,我看到跨 10 台服务器的 400GB 索引的性能可以接受(单个(4GB,2CPU)服务器可以处理 40GB 的 lucene 索引,但仅此而已。YMMV)。
过度,您的意思是广泛/独家?
Lucene 的表现一般都很好。我最近在我的桌面上使用 QuadCore @ 2.4 GHz 2.39 GHz 对 Lucene 进行了一些性能测试
我针对由 10MM 文档组成的磁盘索引运行了各种搜索查询,最慢的查询 (MatchAllDocs) 在 1500 毫秒内返回结果。具有两个或更多搜索词的搜索查询将返回大约 100 毫秒。
您可以对 Lucene 进行大量的性能调整,它们可以显着提高您的搜索速度。
你怎么定义过度?
如果您的应用程序具有可靠的设计,并且性能良好,我不会太担心。
也许您可以获取数据转储以在实时场景中测试性能。
我们使用 lucence 来启用预输入搜索。这意味着对于键入的每个字母,它都会命中 lucence 索引以获取结果。多个界面上的数十个文本框和数十个员工打字,没有投诉和极快的响应时间。(实际上它比我们尝试过的任何其他提前输入的解决方案都运行得更快)。