public static IndexDocumentInfo Create(Node node)
{
if (node == null)
throw new ArgumentNullException("node");
var textEtract = new StringBuilder();
var doc = new IndexDocumentInfo();
doc._hasCustomField = node is IHasCustomIndexField;
var ixnode = node as IIndexableDocument;
if (ixnode == null)
{
doc.AddField(LucObject.FieldName.NodeId, node.Id, Field.Store.YES, true);
doc.AddField(LucObject.FieldName.VersionId, node.VersionId, Field.Store.YES, true);
doc.AddField(LucObject.FieldName.Version, node.Version.ToString().ToLower(), Field.Store.YES, Field.Index.ANALYZED);
doc.AddField(LucObject.FieldName.CreatedById, node.CreatedById, Field.Store.YES, true);
doc.AddField(LucObject.FieldName.ModifiedById, node.ModifiedById, Field.Store.YES, true);
}
else
{
var fieldNames = new List<string>();
foreach (var field in ixnode.GetIndexableFields())
{
if (PostponedFields.Contains(field.Name))
continue;
string extract;
var lucFields = field.GetIndexFieldInfos(out extract);
textEtract.AppendLine(extract);
if (lucFields != null)
{
foreach (var lucField in lucFields)
{
fieldNames.Add(lucField.Name);
doc.AddField(lucField);
}
}
}
}
//doc.AddField(LucObject.FieldName.NodeTimestamp, node.NodeTimestamp, Field.Store.YES, true);
//doc.AddField(LucObject.FieldName.VersionTimestamp, node.VersionTimestamp, Field.Store.YES, true);
doc.AddField(LucObject.FieldName.IsInherited, node.IsInherited ? BooleanIndexHandler.YES : BooleanIndexHandler.NO, Field.Store.YES, Field.Index.NOT_ANALYZED);
doc.AddField(LucObject.FieldName.IsMajor, node.Version.IsMajor ? BooleanIndexHandler.YES : BooleanIndexHandler.NO, Field.Store.YES, Field.Index.NOT_ANALYZED);
doc.AddField(LucObject.FieldName.IsPublic, node.Version.Status == VersionStatus.Approved ? BooleanIndexHandler.YES : BooleanIndexHandler.NO, Field.Store.YES, Field.Index.NOT_ANALYZED);
doc.AddField(LucObject.FieldName.AllText, textEtract.ToString(), Field.Store.NO, Field.Index.ANALYZED);
return doc;
}