Hi,

Thank you kindly for replying. 
Unfortunately, reopen() doesn't help me see the changes.
Here's my test:
First I write & commit a document, and run a search - which correctly finds 
this document.
Then I write & commit another document, re-open the reader and run another 
search - this should find 2 documents, but it only finds 1 document (the first 
one).
BTW if instead of 'reader.reopen()' I instantiate a brand-new searcher (and 
reader), it correctly finds 2 documents...

// Shared objects:
Directory directory = FSDirectory.open(new File("c:/myDir"));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30); 
IndexWriter writer = new IndexWriter(directory, analyzer, 
     IndexWriter.MaxFieldLength.LIMITED);
Query query =  new TermQuery(new Term("title", "hello"));

// Write document #1:
writer.addDocument(makeDoc("hello world 1")); // Field title="hello world 1"
writer.commit();

// First search (yields document #1 as expected):
IndexReader reader=IndexReader.open(directory, true);
IndexSearcher searcher = new IndexSearcher(reader);
TopDocs results1 = searcher.search(query, 10000);
printResults(searcher, results1);

// Write document #2:
writer.addDocument(makeDoc("hello world 2")); // Field title="hello world 2"
writer.commit();

// Reopen reader, and search (should yield 2 documents, but I only see 1):
reader.reopen(true);
TopDocs results2 = searcher.search(query, 10000);
printResults(searcher, results2);


--- On Thu, 1/13/11, Uwe Schindler <u...@thetaphi.de> wrote:

From: Uwe Schindler <u...@thetaphi.de>
Subject: RE: Newbie: "Life span" of IndexWriter / IndexSearcher?
To: java-user@lucene.apache.org
Date: Thursday, January 13, 2011, 7:40 AM

You can leave the IndexWriter and IndexSearcher all the time. The only
important thing, changes made by IndexWriter's commit() method are only seen
by IndexSearcher, when the underlying IndexReader is reopened (e.g. by using
IndexReader.reopen()) - please note that this only works with direct access
to the IndexReaders, so I would recommend using the constructors of
IndexSearcher that take IndexReaders (the Directory ones are only for easy
beginner's use). 




      

Reply via email to