You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Tim Smith (JIRA)" <ji...@apache.org> on 2009/06/29 18:00:48 UTC

[jira] Reopened: (LUCENE-1705) Add deleteAllDocuments() method to IndexWriter

     [ https://issues.apache.org/jira/browse/LUCENE-1705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tim Smith reopened LUCENE-1705:
-------------------------------


Looks like i found an issue with this

The deleteAll() method isn't resetting the nextDocID on the DocumentsWriter (or some similar behaviour)

so, the following state will result in an error:
* deleteAll()
* updateDocument("5", doc)
* commit()

this results in a delete for doc "5" getting buffered, but with a very high "maxDocId"
at the same time, doc is added, however, the following will then occur on commit:
* flush segments to disk
* doc "5" is now in a segment on disk
* run deletes
* doc "5" is now blacklisted from segment 

Will work on fixing this and post a new patch (along with updated test case)

(was worried i was missing an edge case)

> Add deleteAllDocuments() method to IndexWriter
> ----------------------------------------------
>
>                 Key: LUCENE-1705
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1705
>             Project: Lucene - Java
>          Issue Type: Wish
>          Components: Index
>    Affects Versions: 2.4
>            Reporter: Tim Smith
>            Assignee: Michael McCandless
>             Fix For: 2.9
>
>         Attachments: IndexWriterDeleteAll.patch, LUCENE-1705.patch
>
>
> Ideally, there would be a deleteAllDocuments() or clear() method on the IndexWriter
> This method should have the same performance and characteristics as:
> * currentWriter.close()
> * currentWriter = new IndexWriter(..., create=true,...)
> This would greatly optimize a delete all documents case. Using deleteDocuments(new MatchAllDocsQuery()) could be expensive given a large existing index.
> IndexWriter.deleteAllDocuments() should have the same semantics as a commit(), as far as index visibility goes (new IndexReader opening would get the empty index)
> I see this was previously asked for in LUCENE-932, however it would be nice to finally see this added such that the IndexWriter would not need to be closed to perform the "clear" as this seems to be the general recommendation for working with an IndexWriter now
> deleteAllDocuments() method should:
> * abort any background merges (they are pointless once a deleteAll has been received)
> * write new segments file referencing no segments
> This method would remove one of the final reasons i would ever need to close an IndexWriter and reopen a new one 

-- 
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-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org