我需要提高 Lucene 搜索查询的性能。
我可以使用 RAMDirectory吗?它可以优化性能吗?这有索引大小限制吗?
如果有人可以列出使用 RAMDirectory 的优点和缺点,我将不胜感激。
Thanks.
我比较了 FSDirectory 和 RAMDirectory。
搜索 1000 个关键词,平均/最小/最大响应时间 (ms) 在这里
- FSDirectory
- 首次运行:351/7/2611
- 第二次运行:47/7/837
- 第三次运行(重新启动应用程序):53/7/2343
- RAMDirectory
- 首轮运行:1133 年 7 月 38 日
- 第二轮: 34/7/189
- 第三次运行(重新启动应用程序):38/7/959
因此,您可以看到 RAMDirectory 比 FSDirectory 更快,但在“操作系统文件缓存预热”之后,速度差距并不那么明显。 RMADirectory 有什么缺点?在我的测试中
- 它占用的内存更多,1.4G的文件需要大约2G才能加载到内存中。而FSDirectory仅使用700m。那么就意味着full gc的时间更长了。
- 加载需要更多时间,尤其是当索引文件很大时。打开索引时需要将数据从文件复制到内存。这意味着重新启动应用程序时,请求将被阻止更长时间。
- 同时维护两个索引不太实际。因为我们的应用程序每隔几个小时切换一次索引。我们希望新索引正在预热,而旧索引仍在同一个 tomcat 中工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)