私はコントローラで特定のドキュメントを削除する必要があるこのメソッドを持っています。いくつかの記事では、ドキュメントを削除する最善の方法はIndexWriterを使用していると読んでいます。しかし、私はそれを動作させることはできません。これは私のコードLuceneNetでindexWriterを使用してドキュメントを削除する方法
私の指数である:
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();
方法は、削除します
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();
}
の方法 "削除" のボイドを起動するコントローラで:
だから、public ActionResult Delete()
{
_carService.Delete("1");
return RedirectToAction("Index", "Home");
}
私は私のエラーを見つけることができません、少し助けてください...
+1は、キーを分析すべきではないと言及しています。しかし、StandardAnalyzerは、質問で使用される基本整数キーを使いこなすことはありません。 – sisve