如何使用lucene删除/更新文档?

时间:2010-04-14 04:25:04

标签: lucene lucene.net

我正在制作tagging system for my site

我得到了向lucene添加文档的基础知识,但我似乎可以弄清楚当用户更改某些内容的标记时如何删除文档或更新文档。我发现页面说使用文档索引,我需要在效果之前优化,但我如何获得文档索引?另外,我看到另一个说使用IndexWriter删除,但我无法弄清楚如何使用它。

我正在使用C#asp.net而且我没有在该机器上安装java

2 个答案:

答案 0 :(得分:11)

您使用的是什么版本的Lucene? IndexWriter类有一个更新方法,允许您更新(BTW更新内部的更新实际上是删除后跟添加)。您需要具有一些标识符(例如文档标识),以便您进行更新。索引文档时,添加唯一的文档标识符,例如URL,计数器等。然后,“术语”将是您要更新的文档的ID。例如,使用URL,您可以更新:

IndexWriter writer = ...
writer.update(new Term("id","http://somedomain.org/somedoc.htm"), doc); 

答案 1 :(得分:3)

您需要IndexReader来删除文档,我不确定.net版本,但Lucene API的Java和C ++版本有IndexModifier类隐藏了{之间的差异{1}}和IndexReader个类,只需在调用IndexWriteraddDocument()时使用相应的类。

此外,没有在Lucene中更新文档的概念,您必须将其删除,然后重新添加它。为此,您需要确保每个文档在索引中都有唯一的存储ID。