Skip to content

Instantly share code, notes, and snippets.

@need4spd
Created November 27, 2012 07:24
Show Gist options
  • Save need4spd/4152926 to your computer and use it in GitHub Desktop.
Save need4spd/4152926 to your computer and use it in GitHub Desktop.
NRTManager 설명
@Test
public void NRTManagerDiffGenIndexSearcher() throws CorruptIndexException, LockObtainFailedException, IOException {
IndexWriter writer = getWriter();
NRTManager.TrackingIndexWriter trackingIndexWriter = new NRTManager.TrackingIndexWriter(writer);
NRTManager nrtManager = new NRTManager(trackingIndexWriter, new SearcherFactory());
long generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(0, generation);
IndexSearcher indexSearcher = nrtManager.acquire();
Term t = new Term("id", "4");
Query q = new TermQuery(t);
TopDocs docs = indexSearcher.search(q, 10);
Assert.assertEquals(1, docs.totalHits);
//Document추가 후 refresh... increment generation
Document doc = new Document();
doc.add(new Field("id", String.valueOf(4), Field.Store.YES, Field.Index.NOT_ANALYZED));
trackingIndexWriter.addDocument(doc);
nrtManager.maybeRefresh();
//기존 indexSearcher는 1개
docs = indexSearcher.search(q, 10);
Assert.assertEquals(1, docs.totalHits);
docs = nrtManager.acquire().search(q, 10);
Assert.assertEquals(2, docs.totalHits);
}
@Test
public void NRTManagerGenerationTokenObtain() throws CorruptIndexException, LockObtainFailedException, IOException {
IndexWriter writer = getWriter();
NRTManager.TrackingIndexWriter trackingIndexWriter = new NRTManager.TrackingIndexWriter(writer);
NRTManager nrtManager = new NRTManager(trackingIndexWriter, new SearcherFactory());
long generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(0, generation);
Document doc = new Document();
doc.add(new Field("id", String.valueOf(4), Field.Store.YES, Field.Index.NOT_ANALYZED));
long newGeneration = trackingIndexWriter.addDocument(doc);
Assert.assertEquals(1, newGeneration);
generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(0, generation);
nrtManager.maybeRefresh();
generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(1, generation);
}
@Test
public void NRTManagerWaitForGeneration() throws CorruptIndexException, LockObtainFailedException, IOException {
IndexWriter writer = getWriter();
NRTManager.TrackingIndexWriter trackingIndexWriter = new NRTManager.TrackingIndexWriter(writer);
NRTManager nrtManager = new NRTManager(trackingIndexWriter, new SearcherFactory());
long generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(0, generation);
//Document추가 후 refresh... increment generation
Document doc = new Document();
doc.add(new Field("id", String.valueOf(4), Field.Store.YES, Field.Index.NOT_ANALYZED));
trackingIndexWriter.addDocument(doc);
nrtManager.maybeRefresh();
//기존 indexSearcher는 1개
generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(1, generation);
nrtManager.waitForGeneration(1);
}
@Test
public void NRTManagerWaitingListener() throws CorruptIndexException, LockObtainFailedException, IOException {
IndexWriter writer = getWriter();
NRTManager.TrackingIndexWriter trackingIndexWriter = new NRTManager.TrackingIndexWriter(writer);
NRTManager nrtManager = new NRTManager(trackingIndexWriter, new SearcherFactory());
nrtManager.addWaitingListener(new WaitingListener() {
@Override
public void waiting(long arg0) {
System.out.println("wait generation : " + arg0);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.exit(-1);
}
});
long generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(0, generation);
//Document추가 후 refresh... increment generation
Document doc = new Document();
doc.add(new Field("id", String.valueOf(4), Field.Store.YES, Field.Index.NOT_ANALYZED));
trackingIndexWriter.addDocument(doc);
nrtManager.maybeRefresh();
generation = nrtManager.getCurrentSearchingGen();
Assert.assertEquals(1, generation);
nrtManager.waitForGeneration(2);
}
IndexWriter writer = getWriter();
NRTManager.TrackingIndexWriter trackingIndexWriter
= new NRTManager.TrackingIndexWriter(writer);
NRTManager nrtManager = new NRTManager(trackingIndexWriter, new SearcherFactory());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment