lucene管理IndexReader和IndexWriter的最佳实践
实例化IndexReader需要加载索引文件,所以实例化它是非常耗资源的。
IndexReader是线程安全的,通常一个索引目录,我们只实例化一个IndexReader就够了。
当索引数据足够大(G的数量级)的时候,一般把索引资源按照某种规则散列到多个文件目录里(如:index-0,index-1,index-2.... 或者 blog,posts....),当然这些文件目录应该放在同一个根目录下---这时,最好的方式就是用一个Pool去维护这些IndexReader:保证一个文件目录只有一个实例,且不同的IndexReader可以根据名字动态的组合。
StandardIndexReaderPool.java
IndexWriter也需要Pool来管理
StandardIndexWriterPool.java
3 楼 千秋万世 2010-04-09 很好,非常感谢! 4 楼 千秋万世 2010-04-12 我使用你的方法,不过一位仁兄说了看过epoll就知道我过时了,第一次设计这个,不知道他说的是否更加有效,博主如果清楚,忘回复 5 楼 luckaway 2010-04-12 epoll我不了解,更不知道原理 6 楼 千秋万世 2010-04-12 嗯,同样感谢! 7 楼 whiletrue 2012-03-20 indexReader和indexWriter都是线程安全的,用pool有什么意义? 8 楼 promzaid 2012-07-10 whiletrue 写道indexReader和indexWriter都是线程安全的,用pool有什么意义?
人家说的是多个索引目录