合并索引
RAMDirectory ram = new RAMDirectory();FSDDirectory fs = new FSDDirectory();IndexWriter fsWriter = new IndexWriter(fs,new StandardAnalyzer(),true);IndexWriter ramWriter = new IndexWriter(ram ,new StandardAnalyzer(),true);Document doc1 = new Document();Field field1 = new Field("name1","value",Field.Store.YES,Field.Index.TOKENIZED);doc1.add(field);Document doc2 = new Document();Field field2 = new Field("name1","value",Field.Store.YES,Field.Index.TOKENIZED);doc2.add(field);ramWriter.addDocument(doc1);ramWriter.close();fsWriter.addDocument(doc2);fsWriter.addIndexes(new Directory({ram}));fsWriter.close(); ?
注意:addIndexes方法是一个DIRECTORY的类型数组,因此可以合并多个目录下的索引。
在合并内存中的索引时,一定要先将其对应的INDEXWRITER关闭,以保证滞留在缓存中的文档被刷到RAMDirectory中去,如果不关闭,那么会发现索引文件并没有写入到目录中去。