2012-04-03 3 views
2

Lucene.net Document 인스턴스를 직렬화해야합니다. 다음을 시도 할 때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 Field 유형에 매개 변수없는 생성자가 없으므로 예외가 발생합니다.

이 주변의 방법은? Lucene.Net 문서를 직렬화하는 좀 더 일반적으로 인정되는 방법이 있습니까?

답변

2

Document의 모든 멤버가 자바 스타일 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; 
} 
+0

당신이 다른 프로세스에 의해 색인을 생성 할 수 있도록 문서를 직렬화하려고한다면, 당신은 어떤 접근 방식을 취할 것 채울 수 있습니까? – Dzejms

+1

@Dzejms 문서를 직렬화하거나 다른 형식 (KeyValuePair, 사용자 정의 클래스 등)으로 데이터를 직렬화하지 마십시오. 인덱서 프로세스는이 데이터를 읽고 문서를 만들고 인덱싱 할 수 있습니다. –