package org.genedb.web.mvc.model;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import java.io.File;
import java.io.IOException;
public class MergeLuceneIndices {
public static void main(String[] args) throws CorruptIndexException, LockObtainFailedException, IOException {
MergeLuceneIndices mli = new MergeLuceneIndices();
mli.merge(args[0], "org.gmod.schema.mapped.Feature", args[1]);
mli.merge(args[0], "org.gmod.schema.mapped.Organism", args[1]);
}
private void merge(String destinationDir, String indexName, String sourceDir) throws CorruptIndexException, LockObtainFailedException, IOException {
IndexWriter destination = new IndexWriter(destinationDir +File.separatorChar+indexName, new SimpleAnalyzer(), true);
File source = new File(sourceDir);
File[] dirs = source.listFiles();
Directory[] directories = new Directory[dirs.length];
for (int i = 0; i < dirs.length; i++) {
directories[i] = FSDirectory.getDirectory(dirs[i].getAbsolutePath()+File.separatorChar+indexName);
}
destination.addIndexesNoOptimize(directories);
destination.optimize();
destination.close();
}
}