Carrying this excellent question over to java-dev (see below).
The idea of "incrementally fixing up the FieldCache" has been
discussed before, eg most recently here:
http://www.gossamer-threads.com/lists/lucene/java-dev/53852#53852
And I think this issue from Hoss is working towards it:
https://issues.apache.org/jira/browse/LUCENE-831
I think distributing the caching down to each searcher makes sense?
It's more amenable to incremental updates than a single massive array
at the top with all.
Then, we also talked about faster ways to store a "column-stride
stored field" (eg, norms), here:
http://www.gossamer-threads.com/lists/lucene/java-dev/53878#53878
which would make populating cache of the value for every doc for a
given stored field far faster.
I haven't really looked closely at these (I've been focusing on the
indexing side of the house so far!), but, I do think these ideas are
important to pursue soon (after 2.3). We do really need reopen at the
IndexSearcher level to be as fast as it can be.
Is anyone actively working on this?
Mike
Begin forwarded message:
From: "Scott Tiger" <[EMAIL PROTECTED]>
Date: December 9, 2007 11:23:27 PM EST
To: [EMAIL PROTECTED]
Subject: Re: Can changes on an index be visible to an open
IndexSearcher without reopening it?
Reply-To: [EMAIL PROTECTED]
No plan for IndexSearcher.reopen?
I don't know about cost of creating IndexSearcher instance.
But we almost need IndexSearcher.reopen instead of IndexReader.reopen.
----
IndexReader reader = IndexReader.open(...);
IndexSearcher searcher = new IndexSearcher(reader);
searcher.search(...);
...for reopen
IndexReader newReader = reader.reopen();
if (newReader != reader) {
searcher.close();
reader.close();
reader = newReader;
newReader = null;
searcher = new IndexSearcher(reader);
} else {
newReader = null;
}
searcher.search(...);
...want simply...
IndexSearcher newSearcher = searcher.reopen();
if (newSearcher != searcher) {
searcher.close();
searcher = newSearcher;
newSearcher = null;
}
2007/11/5, Michael McCandless <[EMAIL PROTECTED]>:
Unfortunately, no. Once open, the IndexReader/IndexSearcher searches
a frozen "point in time" snapshot of the index as it existed when it
was first opened.
You'll have to open a new searcher in order to see the changes.
However, there is work underway now to add a "reopen" method to
IndexReader that somewhat lowers the cost of opening a reader (not
yet
clear by how much). This should be part of the next release (2.3).
See here for details:
https://issues.apache.org/jira/browse/LUCENE-743
Mike
"Enrique Lamas" <[EMAIL PROTECTED]> wrote:
Hi,
I have an application using Lucene 2.2.0 that opens an
IndexSearcher only
once to optimize performance, because opening the index is a heavy
operation. My question is, if I modify the index with an
IndexWriter or
IndexModifier, is there any way for the changes to be visible to the
opened IndexSearcher without reopening it?
Thanks
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]