[ https://issues.apache.org/jira/browse/LUCENE-1313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12702673#action_12702673 ]
Michael McCandless commented on LUCENE-1313: -------------------------------------------- {quote} I'm confused as to how we make DocumentsWriter switch from writing to disk vs the ramdir? It seems like a fairly major change to the system? One that's hard to switch later on after IW is instantiated? Perhaps the IW.addWriter method is easier in this regard? {quote} When we create SegmentWriteState (which is supposed to contain all details needed to tell DW how/where to write the segment), we'd set its directory to the RAMDir? That ought to be all that's needed (though, it's possible some places use a private copy of the original directory, which we should fix). DW should care less which Directory the segment is written to... {quote} > the difference is I'd prefer to do a merge of the RAM > segments vs the straight one-for-one copy that > resolveExternalSegments does. Yeah I implemented it this way in the IW.addWriter code. I agree it's better for IW.commit to copy all the ramdir segments to one disk segment. {quote} OK. Maybe we modify resolveExternalSegments to accept a "doMerge"? {quote} I started working on the IW.addWriter(IndexWriter, boolean removeFrom) where removeFrom removes the segments that have been copied to the destination writer from the source writer. This method gets around the issue of blocking because potentially several writers could concurrently be copied to the destination writer. The only issue at this point is how the destination writer obtains segmentreaders from source readers when they're in the other writers' pool? Maybe the SegmentInfo can have a reference to the writer it originated in? That way we can easily access the right reader pool when we need it? {quote} I don't think we need two writers? I think one writer, sometimes flushing to RAMDir, is a clean solution? > Realtime Search > --------------- > > Key: LUCENE-1313 > URL: https://issues.apache.org/jira/browse/LUCENE-1313 > Project: Lucene - Java > Issue Type: New Feature > Components: Index > Affects Versions: 2.4.1 > Reporter: Jason Rutherglen > Priority: Minor > Fix For: 2.9 > > Attachments: LUCENE-1313.jar, LUCENE-1313.patch, LUCENE-1313.patch, > LUCENE-1313.patch, LUCENE-1313.patch, lucene-1313.patch, lucene-1313.patch, > lucene-1313.patch, lucene-1313.patch > > > Realtime search with transactional semantics. > Possible future directions: > * Optimistic concurrency > * Replication > Encoding each transaction into a set of bytes by writing to a RAMDirectory > enables replication. It is difficult to replicate using other methods > because while the document may easily be serialized, the analyzer cannot. > I think this issue can hold realtime benchmarks which include indexing and > searching concurrently. -- 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: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org