lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Koberg" <...@koberg.com>
Subject RE: can't delete from an index using IndexReader.delete()
Date Mon, 23 Jun 2003 21:38:25 GMT
Here is a simple class that can reproduce the problem (happens with the last
stable release too). Let me know if you would prefer this as an attachment.

Call like this:
java TestReaderDelete existing_id new_label
- or -

Try:
java TestReaderDelete B724547 ppppppp

and then try:
java TestReaderDelete a266122794 ppppppp

If an index has not been created it will create one. Keep running the one of
the above example commands (with and without deleting the index directory)
and see what happens to the System.out.println's



import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.DateField;

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.xml.sax.Attributes;
import javax.xml.parsers.*;

import java.io.*;
import java.util.*;


class TestReaderDelete {

  

  public static void main(String[] args) 
    throws IOException
  {
    File index = new File("./testindex");
    if (!index.exists()) {
      HashMap test_map = new HashMap();
      test_map.put("preamble_content", "Preamble content bbb");
      test_map.put("art_01_section_01", "Article 1, Section 1");
      test_map.put("toc_tester", "Test TOC XML bbb");
      test_map.put("B724547", "bio example");
      test_map.put("a266122794", "tester");
      indexFiles(index, test_map);
    } 
    String identifier = args[0];
    String new_label = args[1];
    testDeleteAndAdd(index, identifier, new_label);
  }
  

  public static void indexFiles(File index, HashMap test_map) 
  {
    try {
      IndexWriter writer = new IndexWriter(index, new StandardAnalyzer(),
true);
      for (Iterator i=test_map.entrySet().iterator(); i.hasNext(); ) {
        Map.Entry e = (Map.Entry) i.next();
System.out.println("Adding: " + e.getKey() + " = " + e.getValue());
        Document doc = new Document();
        doc.add(Field.Text("id", (String)e.getKey()));      
        doc.add(Field.Text("label", (String)e.getValue())); 
        writer.addDocument(doc);
      }
      writer.optimize();
      writer.close();
    } catch (Exception e) {
      System.out.println(" caught a " + e.getClass() +
			 "\n with message: " + e.getMessage());
    }
  }
  
  
  public static void testDeleteAndAdd(File index, String identifier, String
new_label) 
    throws IOException
  {
    IndexReader reader = IndexReader.open(index);
System.out.println("!!! reader.numDocs() : " + reader.numDocs());    
System.out.println("reader.indexExists(): " + reader.indexExists(index));

System.out.println("term field: " + new Term("id", identifier).field());
System.out.println("term text: " + new Term("id", identifier).text());
System.out.println("reader.docFreq: " + reader.docFreq(new Term("id",
identifier)));  
System.out.println("deleting target now...");    
    int deleted_num = reader.delete(new Term("id", identifier));
System.out.println("*** deleted_num: " + deleted_num);    
    reader.close();
    try {
      IndexWriter writer = new IndexWriter(index, new StandardAnalyzer(),
false);
      String ident = identifier;
      Document doc = new Document();
      doc.add(Field.Text("id", identifier));      
      doc.add(Field.Text("label", new_label)); 
      writer.addDocument(doc);
      writer.optimize();
      writer.close();
    } catch (Exception e) {
      System.out.println(" caught a " + e.getClass() +
			 "\n with message: " + e.getMessage());
    }

System.out.println("!!! reader.numDocs() after deleting and adding : " +
reader.numDocs()); 
  }     
  
}



> -----Original Message-----
> From: Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com]
> Sent: Sunday, June 22, 2003 9:42 PM
> To: Lucene Users List
> 
> The code looks fine.  Unfortunately, the provided code is not a full,
> self-sufficient class that I can run on my machine to verify the
> behaviour that you are describing.
> 
> Otis



---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-user-help@jakarta.apache.org


Mime
View raw message