Lucene中的文档包装器.NET不能工作
本文关键字:NET 不能 工作 包装 文档 Lucene | 更新日期: 2023-09-27 18:16:47
我正在使用Lucene,并为我的文档索引一个包装类。这个包装器类内部包含一个Lucene.Net.Documents.Document的实例。它看起来像这样:
public class Wrapper
{
public Document Document { get; private set; }
public Wrapper()
{
this.Document = new Document();
// Adding fields here...
Document.Add(new Field("ID", "", Field.Store.YES, Field.Index.ANALYZED));
...
}
/// <summary>
/// Gets or sets the ID.
/// </summary>
public string ID
{
get { return this.Document.GetField("ID").StringValue; }
set { this.Document.GetField("ID").SetValue(value); }
}
...
}
我使用包装器是为了便于处理。如果我想创建一个新记录添加到索引,我正在做以下操作:
var w = new Wrapper();
w.ID = "5";
var writer = new IndexWriter(...);
writer.Add(w.Document);
我的问题是索引的记录是完全空的。然而,当我调试应用程序并检查变量"wrapper-instance的Document-property"时,我可以找到所有值。但是它们不存储在索引中。
有什么想法吗?
到目前为止我的进一步发现:
相比之下,我发现使用不包装…就像下面的……
var d = new Document();
d.Add(new Field("ID", "5", Field.Store.YES, Field.Index.ANALYZED));
var writer = new IndexWriter(...);
writer.Add(d);
我发现了这个问题+答案:https://stackoverflow.com/a/3364651/1623426他正在做类似的事情。但我的问题在哪里?
问题解决
我使用(在我的例子中写的)
writer.Add(document);
…而不是…
writer.AddDocument(document);
:/
包装器工作正常。我是通过对比femtoRgons的例子发现的