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他正在做类似的事情。但我的问题在哪里?

Lucene中的文档包装器.NET不能工作

问题解决

我使用(在我的例子中写的)

writer.Add(document);

…而不是…

writer.AddDocument(document);

:/

包装器工作正常。我是通过对比femtoRgons的例子发现的