序列化Lucene.net文档

本文关键字:文档 net Lucene 序列化 | 更新日期: 2023-09-27 18:29:49

我需要序列化Lucene.net文档实例。当我尝试以下时

    public bool Serialize(Document doc)
    {
        XmlSerializer serializer = new XmlSerializer(doc.GetType());
        TextWriter writer = new StreamWriter(Path.Combine(_indexPath, String.Format("{0}{1}",Guid.NewGuid().ToString(), ".xml")));
        serializer.Serialize(writer, doc);
        writer.Close();
        return true;
    }

我收到一个异常,因为Lucene字段类型没有无参数构造函数。

"Lucene.Net.Documents.Field cannot be serialized because it does not have a parameterless constructor."

有办法绕过这个吗?有没有一种更普遍接受的序列化Lucene.Net文档的方法?

序列化Lucene.net文档

即使可以,它也不会对您有多大帮助,因为Document的所有成员都是java风格的getXXX/setXXX方法(而不是属性或字段)。最简单的方法是自己形成字段/值对,然后序列化它们。

例如,您可以填写&序列化MyDocument

public class MyDocument
{
    public List<MyField> Fields;
}
public class MyField
{
    public string Field;
    public string Text;
    public bool Indexed;
    public bool Stored;
}