"Antony Bowesman" <[EMAIL PROTECTED]> wrote: > Doron Cohen wrote: > > Antony Bowesman <[EMAIL PROTECTED]> wrote on 28/05/2007 22:48:41: > > > >> I read the new IndexWriter Javadoc and I'm unclear about this > >> autocommit. In > >> 2.1, I thought an IndexReader opened in an IndexSearcher does not "see" > >> additions to an index made by an IndexWriter, i.e. maxDoc and > >> numDocs remain > >> constant, so the statement > >> > >> "When autoCommit is true then every flush is also a commit (IndexReader > >> instances will see each flush as changes to the index). This is > >> the default, to > >> match the behavior before 2.2" > >> > >> makes me wonder if my assumptions are wrong. Can you clarify > >> what it means by > >> the IndexReader "seeing" changes to the index? > > > > Antony, your assumptions were (and still are) correct - once > > an index reader is opened it is unaffected by changes to the > > underlying index. Would it be clearer if the javadoc said: > > "(An IndexReader instance will see changes to the index caused > > by flush operations that completed prior to opening that > > IndexReader instance)."? > > Thanks Doron, I understood "IndexReader instance" as one that was already > open, > as it's not possible to 'open' an existing object instance, the static open() > methods create new instances. > > Your explanation clarifies things. So, the scenario where the IndexReader > sees > changes with autocommit=true is > > BEGIN > IndexWriter - open > - add documents > - some merges/flushes occur here > IndexReader - open > - sees index with results of earlier merges > IndexWriter - close > END > > whereas with autocommit=false, the IndexReader would see the state of the > index > at BEGIN and any merges/flushes would not show. > > Perhaps the text could then be something like > > "(Changes to the index caused by flush operations will be visible to an > IndexReader when it is opened prior to closing the IndexWriter)"
I've actually updated the javadocs to add this after the description of autoCommit: Regardless of <code>autoCommit</code>, an [EMAIL PROTECTED] IndexReader} or [EMAIL PROTECTED] org.apache.lucene.search.IndexSearcher} will only see the index as of the "point in time" that it was opened. Any changes committed to the index after the reader was opened are not visible until the reader is re-opened. > It would also be worth updating the isCurrent() Javadoc to clarify its > behaviour. Presumably, with autocommit=false, isCurrent() will always return > true is only using the IndexWriter to add/delete documents. Excellent point! I will go update isCurrent as well. Mike --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]