I can see people asking if they can use these methods to update Documents that have already been indexed, so I think it would be good if you could add notes to both remove methods and emphasize that they are useful only for Documents that have not yet been indexed.
Otis --- [EMAIL PROTECTED] wrote: > goller 2004/04/20 10:26:16 > > Modified: src/test/org/apache/lucene/document TestDocument.java > src/java/org/apache/lucene/document Document.java > Log: > removeField and removeFields added to Document > enhancement was proposed in bug 28462 > > Revision Changes Path > 1.4 +33 -1 > jakarta-lucene/src/test/org/apache/lucene/document/TestDocument.java > > Index: TestDocument.java > =================================================================== > RCS file: > /home/cvs/jakarta-lucene/src/test/org/apache/lucene/document/TestDocument.java,v > retrieving revision 1.3 > retrieving revision 1.4 > diff -u -r1.3 -r1.4 > --- TestDocument.java 29 Mar 2004 22:48:06 -0000 1.3 > +++ TestDocument.java 20 Apr 2004 17:26:16 -0000 1.4 > @@ -40,6 +40,38 @@ > */ > public class TestDocument extends TestCase > { > + > + /** > + * Tests [EMAIL PROTECTED] Document#remove()} method for a brand new > Document > + * that has not been indexed yet. > + * > + * @throws Exception on error > + */ > + public void testRemoveForNewDocument() throws Exception > + { > + Document doc = makeDocumentWithFields(); > + assertEquals(8, doc.fields.size()); > + doc.removeFields("keyword"); > + assertEquals(6, doc.fields.size()); > + doc.removeFields("doesnotexists"); // removing > non-existing fields is siltenlty ignored > + doc.removeFields("keyword"); // removing a field more than > once > + assertEquals(6, doc.fields.size()); > + doc.removeField("text"); > + assertEquals(5, doc.fields.size()); > + doc.removeField("text"); > + assertEquals(4, doc.fields.size()); > + doc.removeField("text"); > + assertEquals(4, doc.fields.size()); > + doc.removeField("doesnotexists"); // removing > non-existing fields is siltenlty ignored > + assertEquals(4, doc.fields.size()); > + doc.removeFields("unindexed"); > + assertEquals(2, doc.fields.size()); > + doc.removeFields("unstored"); > + assertEquals(0, doc.fields.size()); > + doc.removeFields("doesnotexists"); // removing non-existing > fields is siltenlty ignored > + assertEquals(0, doc.fields.size()); > + } > + > /** > * Tests [EMAIL PROTECTED] Document#getValues()} method for a brand new > Document > * that has not been indexed yet. > > > > 1.17 +31 -0 > jakarta-lucene/src/java/org/apache/lucene/document/Document.java > > Index: Document.java > =================================================================== > RCS file: > /home/cvs/jakarta-lucene/src/java/org/apache/lucene/document/Document.java,v > retrieving revision 1.16 > retrieving revision 1.17 > diff -u -r1.16 -r1.17 > --- Document.java 29 Mar 2004 22:48:01 -0000 1.16 > +++ Document.java 20 Apr 2004 17:26:16 -0000 1.17 > @@ -17,6 +17,7 @@ > */ > > import java.util.Enumeration; > +import java.util.Iterator; > import java.util.List; > import java.util.ArrayList; > import java.util.Vector; > @@ -79,6 +80,36 @@ > * treated as though appended for the purposes of search. */ > public final void add(Field field) { > fields.add(field); > + } > + > + /** > + * Removes field with the given name from the document. > + * If multiple fields exist with this name, this method returns > the first value added. > + * If there is no field with the specified name, the document > remains unchanged. > + */ > + public final void removeField(String name) { > + Iterator it = fields.iterator(); > + while (it.hasNext()) { > + Field field = (Field)it.next(); > + if (field.name().equals(name)) { > + it.remove(); > + return; > + } > + } > + } > + > + /** > + * Removes all fields with the given name from the document. > + * If there is no field with the specified name, the document > remains unchanged. > + */ > + public final void removeFields(String name) { > + Iterator it = fields.iterator(); > + while (it.hasNext()) { > + Field field = (Field)it.next(); > + if (field.name().equals(name)) { > + it.remove(); > + } > + } > } > > /** Returns a field with the given name if any exist in this > document, or > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]