lucene IndexWriter addDocuments bug

               为了理论上的批量处理快点,在lucene中我使用了 IndexWriter  addDocuments ,对比这个接口还有个addDocument,理所当然的认为2者的差别主要在于一个foreach了,不过大体处理过程也的确如此,殊不知后来的各种诡异hang都因这个假设,发现我本地测试跑,部署web方式跑,测试环境web方式跑,每次都因为不同的批量因子和RAMBuffer而hang住,我可不想穷举各种可用的因子,故觉得存在bug,看Lucene的bug列表,果然发现了这个问题,见

TestNRTThreads hangs in nightly 3.x builds

https://issues.apache.org/jira/browse/LUCENE-3339

               

                      这个bug还没修复掉,希望在3.4能修复,针对这个bug我想大量的对addDocument的调用应该是没问题,故在我的代码里开始进行foreach调用(之前传递个list即可),写完了开始部署测试,发现尽然整体索引时间降低了2倍多,好吧之前应该做下对比性测试的,批量的也许未必效果要比foreach的好,还是要看具体实现了。

 

                    在addDocument与 addDocuments中都会有对锁的操作,之前hang住都是在等待一个writer锁,批量的貌似会锁更长的时间,如果有锁与多线程存在的情况下,多线程短锁的效果应该比长锁好很多,把锁的粒度控制在最小,毕竟这个牵扯太多还容易死锁。

你可能感兴趣的:(document)