/** Utility method for merging indices */ public static void main(String args[]) throws Exception { if (args[0].equals("--merge") && args.length == 3) { merge( ApplicationSetup.TERRIER_INDEX_PATH, ApplicationSetup.TERRIER_INDEX_PREFIX, Integer.parseInt(args[1]), Integer.parseInt(args[2]) ); return; } logger.error("Usage: org.terrier.indexing.Indexer --merge [lowid] [highid]"); }
/** Merge a series of numbered indices in the same path/prefix area. New merged index * will be stored at mpath/mprefix_highest+1. * @param mpath Path of all indices * @param mprefix Common prefix of all indices * @param lowest lowest subfix of prefix * @param highest highest subfix of prefix */ public static void merge(String mpath, String mprefix, int lowest, int highest) { //we define the counterMerged in order to //ensure that the merged data structures will //have different names LinkedList<String[]> llist = new LinkedList<String[]>(); for (int i=lowest; i<=highest; i++) { llist.add(new String[]{mpath,mprefix+ "_" + i}); } merge(mpath, mprefix, llist, highest+1); }
merge(path, oldIndexPrefix, 1, counter);