Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To Delete a Document using indexWriter in LuceneNet

I have this method that I invoke in my controller that have to delete a specific Document. I read in some articles that the best way to delete a Document is using a IndexWriter. But I can't make it work. This is my code

My Index:

    var article1 = new Document();
               article1.Add(new Field("Id", "1", Field.Store.YES, Field.Index.ANALYZED));
               article1.Add(new Field("Author", "Author", Field.Store.YES, Field.Index.ANALYZED));
               article1.Add(new Field("Title", "Title", Field.Store.YES, Field.Index.ANALYZED));

  var directory = FSDirectory.Open(new DirectoryInfo(IndexRoute));
           var analyzar = new StandardAnalyzer(Version.LUCENE_29);

           var writer = new IndexWriter(directory, analyzar, true,  IndexWriter.MaxFieldLength.LIMITED);

           writer.AddDocument(article1);
           writer.Optimize();
           writer.Commit();
           writer.Close();

The method delete:

public void Delete(string id)
{
    var directory = FSDirectory.Open(new DirectoryInfo(IndexRoute));
    var analyzar = new StandardAnalyzer(Version.LUCENE_29);
    var writer = new IndexWriter(directory, analyzar, true, IndexWriter.MaxFieldLength.LIMITED);
    var term = new Term("Id", id);
    writer.DeleteDocuments(term);
    writer.Optimize();
    writer.Commit();
    writer.Close();
}

The method in the controller that invoke the "delete" void:

  public ActionResult Delete()
    {
        _carService.Delete("1");
        return RedirectToAction("Index", "Home");
    }

So I can't find my error,a little help please...

like image 347
gustavotroconis Avatar asked May 03 '12 21:05

gustavotroconis


1 Answers

When you build your IndexWriter for the delete method like that:

new IndexWriter(directory, analyzar, true, IndexWriter.MaxFieldLength.LIMITED);

You are specifying true for the create parameter, which overwrites the existing index with an empty one, deleting all your documents.

like image 151
Jf Beaulac Avatar answered Sep 20 '22 16:09

Jf Beaulac