【发布时间】:2009-10-17 14:56:40
【问题描述】:
我需要提高 Lucene 搜索查询的性能。 我可以使用 RAMDirectory 吗?它会优化性能吗?是否有任何索引大小限制? 如果有人能列出使用 RAMDirectory 的优缺点,我将不胜感激。
谢谢。
【问题讨论】:
标签: lucene lucene.net
我需要提高 Lucene 搜索查询的性能。 我可以使用 RAMDirectory 吗?它会优化性能吗?是否有任何索引大小限制? 如果有人能列出使用 RAMDirectory 的优缺点,我将不胜感激。
谢谢。
【问题讨论】:
标签: lucene lucene.net
我比较 FSDirectory 和 RAMDirectory。
- 索引大小为1.4G
- Centos,5G 内存
搜索1000个关键词,平均/最小/最大响应时间(ms)在这里
因此,您可以看到 RAMDirectory 比 FSDirectory 执行得更快,但是在“os file cache warm up”之后,速度差距并没有那么明显。 RMADirectory 的缺点是什么?在我的测试中
【讨论】:
RAMDirectory 更快,但不会写入磁盘。它仅在您的程序运行时存在,并且每次运行时都必须从头开始创建。
如果您的索引足够小,可以轻松放入 RAM,并且您不经常更新它,您可以在磁盘上维护一个索引,然后使用 RAMDirectory(Directory dir) 构造函数从它创建一个 RAMDirectory。一旦你付出了加载它的代价,查询它应该比查询磁盘上的更快。但请测量差异 - 如果索引可以作为 RAMDirectory 放入内存,那么它也可以放入磁盘缓存中,因此您可能看不出太大差异。
【讨论】:
您应该分析 RAMDirectory 的使用情况。至少在 Linux 中,由于操作系统缓冲 I/O 的方式,使用 RAMDirectory 并不比使用默认的 FSDirectory 快。
【讨论】: