LUCENE-5679: remove the single-parameter deleteDocuments() versions, in favor of the vararg ones

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1596296 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Shai Erera 2014-05-20 15:50:35 +00:00
parent b49788abfe
commit 920b5fe236
2 changed files with 31 additions and 67 deletions

View File

@ -154,6 +154,10 @@ API Changes
* LUCENE-5640: The Token class was deprecated. Since Lucene 2.9, TokenStreams * LUCENE-5640: The Token class was deprecated. Since Lucene 2.9, TokenStreams
are using Attributes, Token is no longer used. (Uwe Schindler, Robert Muir) are using Attributes, Token is no longer used. (Uwe Schindler, Robert Muir)
* LUCENE-5679: Consolidated IndexWriter.deleteDocuments(Term) and
IndexWriter.deleteDocuments(Query) with their varargs counterparts.
(Shai Erera)
Optimizations Optimizations
* LUCENE-5603: hunspell stemmer more efficiently strips prefixes * LUCENE-5603: hunspell stemmer more efficiently strips prefixes

View File

@ -76,8 +76,8 @@ import org.apache.lucene.util.Version;
and otherwise open the existing index.</p> and otherwise open the existing index.</p>
<p>In either case, documents are added with {@link #addDocument(IndexDocument) <p>In either case, documents are added with {@link #addDocument(IndexDocument)
addDocument} and removed with {@link #deleteDocuments(Term)} or {@link addDocument} and removed with {@link #deleteDocuments(Term...)} or {@link
#deleteDocuments(Query)}. A document can be updated with {@link #deleteDocuments(Query...)}. A document can be updated with {@link
#updateDocument(Term, IndexDocument) updateDocument} (which just deletes #updateDocument(Term, IndexDocument) updateDocument} (which just deletes
and then adds the entire document). When finished adding, deleting and then adds the entire document). When finished adding, deleting
and updating documents, {@link #close() close} should be called.</p> and updating documents, {@link #close() close} should be called.</p>
@ -1216,28 +1216,6 @@ public class IndexWriter implements Closeable, TwoPhaseCommit{
} }
} }
/**
* Deletes the document(s) containing <code>term</code>.
*
* <p><b>NOTE</b>: if this method hits an OutOfMemoryError
* you should immediately close the writer. See <a
* href="#OOME">above</a> for details.</p>
*
* @param term the term to identify the documents to be deleted
* @throws CorruptIndexException if the index is corrupt
* @throws IOException if there is a low-level IO error
*/
public void deleteDocuments(Term term) throws IOException {
ensureOpen();
try {
if (docWriter.deleteTerms(term)) {
processEvents(true, false);
}
} catch (OutOfMemoryError oom) {
handleOOM(oom, "deleteDocuments(Term)");
}
}
/** Expert: attempts to delete by document ID, as long as /** Expert: attempts to delete by document ID, as long as
* the provided reader is a near-real-time reader (from {@link * the provided reader is a near-real-time reader (from {@link
* DirectoryReader#open(IndexWriter,boolean)}). If the * DirectoryReader#open(IndexWriter,boolean)}). If the
@ -1250,8 +1228,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit{
* <b>NOTE</b>: this method can only delete documents * <b>NOTE</b>: this method can only delete documents
* visible to the currently open NRT reader. If you need * visible to the currently open NRT reader. If you need
* to delete documents indexed after opening the NRT * to delete documents indexed after opening the NRT
* reader you must use the other deleteDocument methods * reader you must use {@link #deleteDocuments(Term...)}). */
* (e.g., {@link #deleteDocuments(Term)}). */
public synchronized boolean tryDeleteDocument(IndexReader readerIn, int docID) throws IOException { public synchronized boolean tryDeleteDocument(IndexReader readerIn, int docID) throws IOException {
final AtomicReader reader; final AtomicReader reader;
@ -1339,28 +1316,6 @@ public class IndexWriter implements Closeable, TwoPhaseCommit{
} }
} }
/**
* Deletes the document(s) matching the provided query.
*
* <p><b>NOTE</b>: if this method hits an OutOfMemoryError
* you should immediately close the writer. See <a
* href="#OOME">above</a> for details.</p>
*
* @param query the query to identify the documents to be deleted
* @throws CorruptIndexException if the index is corrupt
* @throws IOException if there is a low-level IO error
*/
public void deleteDocuments(Query query) throws IOException {
ensureOpen();
try {
if (docWriter.deleteQueries(query)) {
processEvents(true, false);
}
} catch (OutOfMemoryError oom) {
handleOOM(oom, "deleteDocuments(Query)");
}
}
/** /**
* Deletes the document(s) matching any of the provided queries. * Deletes the document(s) matching any of the provided queries.
* All given deletes are applied and flushed atomically at the same time. * All given deletes are applied and flushed atomically at the same time.
@ -2079,25 +2034,30 @@ public class IndexWriter implements Closeable, TwoPhaseCommit{
/** /**
* Delete all documents in the index. * Delete all documents in the index.
* *
* <p>This method will drop all buffered documents and will * <p>
* remove all segments from the index. This change will not be * This method will drop all buffered documents and will remove all segments
* visible until a {@link #commit()} has been called. This method * from the index. This change will not be visible until a {@link #commit()}
* can be rolled back using {@link #rollback()}.</p> * has been called. This method can be rolled back using {@link #rollback()}.
* * </p>
* <p>NOTE: this method is much faster than using deleteDocuments( new MatchAllDocsQuery() ). *
* Yet, this method also has different semantics compared to {@link #deleteDocuments(Query)} * <p>
* / {@link #deleteDocuments(Query...)} since internal data-structures are cleared as well * NOTE: this method is much faster than using deleteDocuments( new
* as all segment information is forcefully dropped anti-viral semantics like omitting norms * MatchAllDocsQuery() ). Yet, this method also has different semantics
* are reset or doc value types are cleared. Essentially a call to {@link #deleteAll()} is equivalent * compared to {@link #deleteDocuments(Query...)} since internal
* to creating a new {@link IndexWriter} with {@link OpenMode#CREATE} which a delete query only marks * data-structures are cleared as well as all segment information is
* documents as deleted.</p> * forcefully dropped anti-viral semantics like omitting norms are reset or
* * doc value types are cleared. Essentially a call to {@link #deleteAll()} is
* <p>NOTE: this method will forcefully abort all merges * equivalent to creating a new {@link IndexWriter} with
* in progress. If other threads are running {@link * {@link OpenMode#CREATE} which a delete query only marks documents as
* #forceMerge}, {@link #addIndexes(IndexReader[])} or * deleted.
* {@link #forceMergeDeletes} methods, they may receive * </p>
* {@link MergePolicy.MergeAbortedException}s. *
* <p>
* NOTE: this method will forcefully abort all merges in progress. If other
* threads are running {@link #forceMerge}, {@link #addIndexes(IndexReader[])}
* or {@link #forceMergeDeletes} methods, they may receive
* {@link MergePolicy.MergeAbortedException}s.
*/ */
public void deleteAll() throws IOException { public void deleteAll() throws IOException {
ensureOpen(); ensureOpen();