You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Boris Petrov <bo...@live.com> on 2018/11/09 11:00:26 UTC
SearcherManager not seeing changes in IndexWriter
Hi all,
I'm using Lucene version 7.5.0. We have a test that does something like:
Thread 1:
Field idStringField = new StringField("id", id,
Field.Store.YES);
Field contentsField = new TextField("contents", reader);
Document document = new Document();
document.add(idStringField);
document.add(contentsField);
writer.updateDocument(new Term(ID_FIELD, id), document);
writer.flush(); // not sure this flush is needed?
writer.commit();
Thread 2:
searchManager.maybeRefreshBlocking();
IndexSearcher searcher = searchManager.acquire();
try {
QueryParser parser = new QueryParser("contents", analyzer);
Query luceneQuery = parser.parse(queryText);
ScoreDoc[] hits = searcher.search(luceneQuery,
50).scoreDocs;
} finally {
searchManager.release(searcher);
}
Thread 1 happens before Thread 2.
Sometimes, only sometimes, the commit from thread 1 is not *immediately*
visible in Thread 2. If I put a "Thread.sleep(1000)" it always works.
Without it, sometimes the search is empty. I'm not sure if I'm doing
something wrong or this is a bug?
Thanks!