FileNotFound exception on adding a RAMDirectory to an IndexWriter
-----------------------------------------------------------------
Key: LUCENE-1192
URL: https://issues.apache.org/jira/browse/LUCENE-1192
Project: Lucene - Java
Issue Type: Bug
Affects Versions: 2.3.1
Reporter: Alex Falca
Hi,
I'm getting FileNotFoundException on adding RAMDirectory to an IndexWriter with
following stack trace:
{noformat}
java.io.FileNotFoundException: _8.fnm
at org.apache.lucene.store.RAMDirectory.openInput(RAMDirectory.java:234)
at org.apache.lucene.index.FieldInfos.<init>(FieldInfos.java:57)
at
org.apache.lucene.index.SegmentReader.initialize(SegmentReader.java:298)
at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:262)
at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:221)
at
org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:3099)
at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:2834)
at
org.apache.lucene.index.IndexWriter.copyExternalSegments(IndexWriter.java:2263)
at
org.apache.lucene.index.IndexWriter.addIndexesNoOptimize(IndexWriter.java:2238)
{noformat}
Same code works fine with Lucene 2.2.0. Basically I'm trying to index a huge
number of documents (~21mln) having following workflow:
1. First documents are added to and index which use a RAMDirectory as a storage
2. Once a given condition occurs RAM based index writer is flushed and his
directory is being added to another index writer, which use a FSDirectory as a
storage.
Sample code:
{code}
IndexWriter mainIndexWriter = new IndexWriter(indexDir, new JapaneseAnalyzer(),
true);
IndexWriter ramIndexWriter = new IndexWriter(new RAMDirectory(), new
JapaneseAnalyzer(), true);
mainIndexWriter.setMergeFactor(10);
mainIndexWriter.setUseCompoundFile(false);
ramIndexWriter.setUseCompoundFile(false);
// Here some code for adding documents to RAM index writer
...................................................................................................................
// method where I'm flushing from memory to disk and getting exception
ramIndexWriter.flush();
mainIndexWriter.addIndexesNoOptimize(new Directory[]
{ramIndexWriter.getDirectory()});
ramIndexWriter.close();
ramIndexWriter = new IndexWriter(new RAMDirectory(), new JapaneseAnalyzer(),
true);
ramIndexWriter.setUseCompoundFile(false);
System.gc();
{code}
I understand that I should be using new features of IndexWriter like flushing
by RAM Usage, but wanna see if there any bugs in my case. Possible I'm facing
issue described in LUCENE-1175, but need a confirmation on that.
If you need details on environment(i.e. Java version, settings, hardware
details etc.) - please let me know.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]