Thanks a lot Doron. I thought I had to close all readers and searchers in order to new IndexWriter, otherwise I keep getting Lock timeout exception in a multithreaded environment. In my case, modifying/adding/deleting only happens occasionally, so I don't have a IndexWritter that is open all the time. In order to avoid lock timeout exception, I had to put a real lock in my search method, and a write lock in my add/modify method. I know this is not efficient enough since all the readers/searcher are re-opened each time adding/modifing happens.
>From what you said, I'm thinking of switching to IndexModifier. Before that, I have a few more questions: 1. without using an exclusive lock, is there anyway to new a IndexModifier or IndexWritter while IndexReaders are serving search queries? or do I have to new a IndexWriiter when system starts and keep it open all the time? 2. When adding a new document, and calling optimize(), do I have to close the readers/searchers? 3. In my case, updating non-idexed fields happens a lot, can you explain the side data store in more detail? I'm not sure with this approch. Do you mean creating a seperate database and stores lucene's ids? -- View this message in context: http://www.nabble.com/modify-existing-non-indexed-field-tf1905726.html#a5229084 Sent from the Lucene - Java Users forum at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]