Random comment...
when applying deletes you can break out of the loop early.

+               while (docs.next()) {
+                  int doc = docs.doc();
+                  if (doc <=
(((DeleteTerm)deleteTerms.elementAt(i)).maxSegment)) {
+                     reader.deleteDocument(doc);
+                  }
+               }

can be changed to

             while (docs.next()) {
                 int doc = docs.doc();
                 if (doc >
(((DeleteTerm)deleteTerms.elementAt(i)).maxSegment)) break;
                 reader.deleteDocument(doc);
              }

An alternate implementation could use a HashMap to associate term with
maxSegment.
That would make deletions more efficient for multiple deletes on the
same term (this can easily happen if there are a set of frequently
updated documents).

Solr does much the same thing, except since it doesn't have access to
IndexWriter internals, it keeps track of the number of documents *not*
to delete for a certain term.  An add increases the count, and a
delete resets the count to zero.

-Yonik
http://incubator.apache.org/solr Solr, the open-source Lucene search server

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to