public Map<String, Document> indexRandom( int nThreads, int iterations, int range, Directory dir, int maxThreadStates, boolean doReaderPooling) throws IOException, InterruptedException { Map<String, Document> docs = new HashMap<>(); IndexWriter w = RandomIndexWriter.mockIndexWriter( dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())) .setOpenMode(OpenMode.CREATE) .setRAMBufferSizeMB(0.1) .setMaxBufferedDocs(maxBufferedDocs) .setIndexerThreadPool(new ThreadAffinityDocumentsWriterThreadPool(maxThreadStates)) .setReaderPooling(doReaderPooling) .setMergePolicy(newLogMergePolicy()), new YieldTestPoint()); LogMergePolicy lmp = (LogMergePolicy) w.getConfig().getMergePolicy(); lmp.setNoCFSRatio(0.0); lmp.setMergeFactor(mergeFactor); threads = new IndexingThread[nThreads]; for (int i = 0; i < threads.length; i++) { IndexingThread th = new IndexingThread(); th.w = w; th.base = 1000000 * i; th.range = range; th.iterations = iterations; threads[i] = th; } for (int i = 0; i < threads.length; i++) { threads[i].start(); } for (int i = 0; i < threads.length; i++) { threads[i].join(); } // w.forceMerge(1); w.close(); for (int i = 0; i < threads.length; i++) { IndexingThread th = threads[i]; synchronized (th) { docs.putAll(th.docs); } } // System.out.println("TEST: checkindex"); TestUtil.checkIndex(dir); return docs; }
public DocsAndWriter indexRandomIWReader(int nThreads, int iterations, int range, Directory dir) throws IOException, InterruptedException { Map<String, Document> docs = new HashMap<>(); IndexWriter w = RandomIndexWriter.mockIndexWriter( dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())) .setOpenMode(OpenMode.CREATE) .setRAMBufferSizeMB(0.1) .setMaxBufferedDocs(maxBufferedDocs) .setMergePolicy(newLogMergePolicy()), new YieldTestPoint()); w.commit(); LogMergePolicy lmp = (LogMergePolicy) w.getConfig().getMergePolicy(); lmp.setNoCFSRatio(0.0); lmp.setMergeFactor(mergeFactor); /** * * w.setMaxMergeDocs(Integer.MAX_VALUE); w.setMaxFieldLength(10000); w.setRAMBufferSizeMB(1); * w.setMergeFactor(10); * */ threads = new IndexingThread[nThreads]; for (int i = 0; i < threads.length; i++) { IndexingThread th = new IndexingThread(); th.w = w; th.base = 1000000 * i; th.range = range; th.iterations = iterations; threads[i] = th; } for (int i = 0; i < threads.length; i++) { threads[i].start(); } for (int i = 0; i < threads.length; i++) { threads[i].join(); } // w.forceMerge(1); // w.close(); for (int i = 0; i < threads.length; i++) { IndexingThread th = threads[i]; synchronized (th) { docs.putAll(th.docs); } } TestUtil.checkIndex(dir); DocsAndWriter dw = new DocsAndWriter(); dw.docs = docs; dw.writer = w; return dw; }