Created
November 27, 2012 07:20
-
-
Save need4spd/4152916 to your computer and use it in GitHub Desktop.
SearcherLifeTimeManager 설명
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void customPrunerTest() throws CorruptIndexException, LockObtainFailedException, IOException, InterruptedException { | |
SearcherManager searcherManager = new SearcherManager(directory, new SearcherFactory()); | |
SearcherLifetimeManager lifetimeManager = new SearcherLifetimeManager(); | |
IndexSearcher indexSearcher = searcherManager.acquire(); | |
long firstSearcherToken = lifetimeManager.record(indexSearcher); | |
IndexSearcher newSearcher = lifetimeManager.acquire(firstSearcherToken); | |
Assert.assertEquals(indexSearcher, newSearcher); | |
Assert.assertTrue(indexSearcher == newSearcher); | |
lifetimeManager.prune(new Pruner() { | |
@Override | |
public boolean doPrune(double arg0, IndexSearcher arg1) { | |
return true; | |
} | |
}); //sec | |
IndexSearcher thirdSearcher = lifetimeManager.acquire(firstSearcherToken); | |
Assert.assertNull(thirdSearcher); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void differentSearcherTest() throws CorruptIndexException, LockObtainFailedException, IOException { | |
SearcherManager searcherManager = new SearcherManager(directory, new SearcherFactory()); | |
SearcherLifetimeManager lifetimeManager = new SearcherLifetimeManager(); | |
IndexSearcher indexSearcher = searcherManager.acquire(); | |
Term t = new Term("id", "4"); | |
Query q = new TermQuery(t); | |
TopDocs docs = indexSearcher.search(q, 10); | |
Assert.assertEquals(1, docs.totalHits); | |
long firstSearcherToken = lifetimeManager.record(indexSearcher); | |
Document doc = new Document(); | |
doc.add(new Field("id", String.valueOf(4), Field.Store.YES, Field.Index.NOT_ANALYZED)); | |
IndexWriter writer = getWriter(); | |
writer.addDocument(doc); | |
writer.commit(); | |
writer.close(); | |
searcherManager.maybeRefresh(); | |
IndexSearcher newSearcher = searcherManager.acquire(); | |
docs = newSearcher.search(q, 10); | |
Assert.assertEquals(2, docs.totalHits); | |
long newSearcherToken = lifetimeManager.record(newSearcher); | |
//searcher release... | |
searcherManager.release(indexSearcher); | |
searcherManager.release(newSearcher); | |
indexSearcher = null; | |
newSearcher = null; | |
indexSearcher = lifetimeManager.acquire(firstSearcherToken); | |
newSearcher = lifetimeManager.acquire(newSearcherToken); | |
docs = indexSearcher.search(q, 10); | |
Assert.assertEquals(1, docs.totalHits); | |
docs = newSearcher.search(q, 10); | |
Assert.assertEquals(2, docs.totalHits); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void prunerByAgeTest() throws CorruptIndexException, LockObtainFailedException, IOException, InterruptedException { | |
SearcherManager searcherManager = new SearcherManager(directory, new SearcherFactory()); | |
SearcherLifetimeManager lifetimeManager = new SearcherLifetimeManager(); | |
IndexSearcher indexSearcher = searcherManager.acquire(); | |
long firstSearcherToken = lifetimeManager.record(indexSearcher); | |
Document doc = new Document(); | |
doc.add(new Field("id", String.valueOf(4), Field.Store.YES, Field.Index.NOT_ANALYZED)); | |
IndexWriter writer = getWriter(); | |
writer.addDocument(doc); | |
writer.commit(); | |
writer.close(); | |
searcherManager.maybeRefresh(); | |
IndexSearcher newSearcher = searcherManager.acquire(); | |
long secondSearcherToken = lifetimeManager.record(newSearcher); | |
Thread.sleep(2000); | |
IndexSearcher thirdSearcher = lifetimeManager.acquire(firstSearcherToken); | |
Assert.assertNotNull(thirdSearcher); | |
lifetimeManager.prune(new PruneByAge(1.0)); | |
thirdSearcher = lifetimeManager.acquire(firstSearcherToken); | |
Assert.assertNull(thirdSearcher); | |
thirdSearcher = lifetimeManager.acquire(secondSearcherToken); | |
Assert.assertNotNull(thirdSearcher); | |
Assert.assertTrue(newSearcher == thirdSearcher); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void SearcherLifetimeSimpleTest() throws CorruptIndexException, LockObtainFailedException, IOException { | |
SearcherManager searcherManager = new SearcherManager(directory, new SearcherFactory()); | |
SearcherLifetimeManager lifetimeManager = new SearcherLifetimeManager(); | |
IndexSearcher indexSearcher = searcherManager.acquire(); | |
Term t = new Term("id", "4"); | |
Query q = new TermQuery(t); | |
TopDocs docs = indexSearcher.search(q, 10); | |
Assert.assertEquals(1, docs.totalHits); | |
IndexSearcher newSearcher = lifetimeManager.acquire(1); | |
Assert.assertNull(newSearcher); | |
long token = lifetimeManager.record(indexSearcher); | |
Assert.assertTrue(token > 0L); | |
newSearcher = lifetimeManager.acquire(token); | |
Assert.assertNotNull(newSearcher); | |
docs = newSearcher.search(q, 10); | |
Assert.assertEquals(1, docs.totalHits); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment