Maybe you could explain why you are doing this? Someone could suggest alternative approaches.
Regards, Sanne On Jan 12, 2012 4:02 AM, "dyzc" <1393975...@qq.com> wrote: > That lies in that my apps add indexes to those in RAM rather than update > them. So the size doubled. Seem not related to the OpenMode.CREATE option. > > > ------------------ Original ------------------ > From: "Ian Lea"<ian....@gmail.com>; > Date: Wed, Jan 11, 2012 05:20 PM > To: "java-user"<java-user@lucene.apache.org>; > > Subject: Re: Build RAMDirectory on FSDirectory, and then synchronzing the > two > > > > I tried IndexWriterConfig.OpenMode CREATE, and the size is doubled. > > Prove it. > > > -- > Ian. > > > The only way that is effective is the writer's deleteAll() methods. > > > > On Mon, Jan 9, 2012 at 5:23 AM, Ian Lea <ian....@gmail.com> wrote: > > > >> If you load an existing disk index into a RAMDirectory, make some > >> changes in RAM and call addIndexes to add the contents of the > >> RAMDirectory to the original disk index, you are likely to end up with > >> duplicate data on disk. Depending of course on what you've done to > >> the RAM index. > >> > >> Sounds you want to call addIndexes using a writer on a new, empty, > >> index or overwrite the original. IndexWriterConfig.OpenMode CREATE. > >> > >> > >> -- > >> Ian. > >> > >> > >> On Mon, Jan 9, 2012 at 4:29 AM, dyzc <1393975...@qq.com> wrote: > >> > I'd better provide a snapshot of my code for people to understand my > >> issues: > >> > > >> > > >> > File file=new File("c:/index_files"); > >> > FSDirectory fsDir=new FSDirectory(file); > >> > RAMDirectory ramDir=new RAMDirectory(fsDir, new > >> IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer()); > >> > > >> > > >> > IndexWriter iw = new IndexWriter(ramDir, iwc); > >> > > >> > > >> > ......DO something here with iw (associated with ramDir)..... > >> > > >> > > >> > Now I am trying to synchronize ramDir with fsDir: > >> > > >> > > >> > //close iw prior to synchronization > >> > iw.close(); > >> > > >> > > >> > // synchronize RAM with FS > >> > IndexWriter writer = new IndexWriter(fsDir, new > >> IndexWriterConfig(Version.LUCENE_35, ik)); > >> > writer.addIndexes(ramDir); > >> > writer.close(); > >> > ramDir.close(); > >> > > >> > > >> > > >> > Now I end up with duplicate copies of index files in c:/index_files > >> > > >> > > >> > Is there something that I miss here? > >> > > >> > > >> > ------------------ Original ------------------ > >> > From: "zhoucheng2008"<zhoucheng2...@gmail.com>; > >> > Date: Mon, Jan 9, 2012 12:04 PM > >> > To: "java-user"<java-user@lucene.apache.org>; > >> > > >> > Subject: Build RAMDirectory on FSDirectory, and then synchronzing the > >> two > >> > > >> > > >> > Hi, > >> > > >> > I new a RAMDirectory based upon a FSDirectory. After a few > >> modifications, I would like to synchronize the two. > >> > > >> > > >> > Some on the mailing list provided a solution that uses addIndex() > >> function. > >> > > >> > > >> > However, the FSDirectory simply combines with the RAMDirectory, and > the > >> size doubled. > >> > > >> > > >> > How can I do a real synchronization? > >> > > >> > > >> > Thanks > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > >> For additional commands, e-mail: java-user-h...@lucene.apache.org > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org