Lucene的搜索算法不适用于网格计算

Lucene被写出来的时候硬件还没有很大的内存,多处理器也不存在。

因此,索引结构是被设计成使用线性的内存开销很小的方式。

我花了很长的时间来重写跨度查询算法,并使用多线程内 容(使用双核处理器),但是基于迭代器的目录读取算法几乎不能实现。

在一些罕见的场合你能做一些优化并能迭代一个索引通过并行方式,但是大多数场合这是不 可能的。

我们遇到的情况是,当我们有一个复杂的,超过50+的内嵌跨度查询,CPU还在空闲但I/O却一直忙碌,甚至在使用了RAMDirectory.