我需要序列化一个Lucene.net Document实例。当我尝试以下
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 Field类型没有无参数构造函数。
"Lucene.Net.Documents.Field cannot be serialized because it does not have a parameterless constructor."
有什么方法吗?是否有更普遍接受的序列化Lucene.Net文档的方法?
答案 0 :(得分:2)
即使你可以,它也没有多大帮助,因为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;
}