As I understand it, FSDirectory *is* RAMdirectory, at least until
it flushes. There have been several discussions of this,
search the mail archive for things like MergeFactor, MaxBufferedDocs
and the like. You'll find quite a bit of information about how these
parameters interact.

Particularly, see the thread titled

"MergeFactor and MaxBufferedDocs value should ...?"

I suspect, that if you're explicitly creating RAMDirectories and
merging them that your code is more complex than it needs
to be to no good purpose (of course, I've been wrong before,
once or twice at least <G>).

If you really require parallel indexing, you might try running
FSDirectory based processes on several machines, then merging
the resulting indexes as a final step. How you tell each of these
processes which documents to index I leave as an exercise for
the reader.....

Best
Erick


On 4/29/07, Chandan Tamrakar <[EMAIL PROTECTED]> wrote:

I am trying to index a huge documents on batches   . Batch size is
parameterized to the application  say X docs , that means it will hold X
no.
of

Docs in the RAM before I flush to file system using
IndexWriter.addIndexes(Directory[]) method



My question is :



Do I need to set mergefactor ? , will it hold default mergefactor docs in
memory before it is written to disk as segment .

(But my application will call indexwriter.addindexes function only after X
no of documents are in memory)



If the index sizes are big , at some point of time there might be a out of
memory exceptions , ( yes I could check a memory before another
ramdirectory
is being created) But what would be the best solution  ? Is FSDirectory is
better option than Ramdirectory for huge text indexing ? I have roughly 50
GB of fulltext to index?





Thks in advance.


Reply via email to