Is there a way to preload portions of the other files, particularly .tis, .frq, .prx into memory? My total index size is roughly 4GB and we have 2GB memory in the machine... the .tii file is tiny (about 1.5 MB). Basically, before my server starts accepting and handling queries, I'd like to load as much of the index into memory as possible, so that Lucene doesn't have to always hit the disk for each unique keyword, which is an order of magnitude slower... Does Lucene have this preloading feature?
If not, is there a way to approximate the preloading to get Lucene to cache some of the disk data into memory? I tried to warm up Lucene by searching for 1000 random terms... but that doesn't seem to work. After warming up, searching for those same exact 1000 terms again was very fast.... but querying 1000 *other* terms was just as slow as the warm up query speed... Much thanks, ~Heng On 5/31/06, Otis Gospodnetic <[EMAIL PROTECTED]> wrote:
Look in your index directory and look for a .tii file. That file is read in RAM (if there is enough of it. If there is not, you will see OOM). What Monsur was talking about is related to sorting and warming up of FieldCache instances. If you don't sort your results by criteria other than the default relevance, you can ignore FieldCache. Any query should cause Lucene to read the whole .tii in RAM. If you do not see a .tii file in your index directory, and instead see one or more .cfs file, you are using the compound index format. Run IndexReader as a java app (e.g. java org.apache.lucene....IndexReader/your/index/dir/file(?)) to get a listing of individual index files inside a single cfs file. Otis ----- Original Message ---- From: Charles Mi <[EMAIL PROTECTED]> To: java-user@lucene.apache.org Sent: Wednesday, May 31, 2006 11:55:44 PM Subject: Re: preloading / "warming up" the index Thanks for the advice guys... i'm still not entirely clear on what a search causes Lucene to do with respect to warming up/caching portions of the index in memory. If I warm up lucene using a search for "apple", does Lucene load the entire inverted index into Memory, or just the part of the index that contains the entry for "apple" ? Basically I'd like to make sure that the entire inverted index (or as much as possible) is preloaded into memory, so if I issue a subsequent search for "microsoft", it will be fast. Does Lucene have any mechanism for preloading the inverted index into memory? Also is there a way to figure out what percentage of lucene's data storage is occupied by the inverted index, and what percentage is occupied by the other info, like storing the documents' field values and such. Thanks! Charles On 5/31/06, Monsur Hossain <[EMAIL PROTECTED]> wrote: > > When Lucene first issues a query, it caches a hash of sort values (one > value per document, plus a bit more if you are sorting on strings), > which takes a while. Therefore, when our application first starts up, > we issue one query per sort type. As I understand, it doesn't matter > what the query is or how complicated it is. > > Monsur > > > > On 5/31/06, Charles Mi <[EMAIL PROTECTED]> wrote: > > Is there a way to preload the index into memory when the process starts? > > Basically I want to warm up the index before processing user queries. > What > > are some recommended ways to do this? 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]