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); }
public static IndexDocumentInfo Create(Node node, bool skipBinaries, bool isNew) { if (node == null) { throw new ArgumentNullException("node"); } if (!Indexable(node)) { return(NotIndexedDocument); } var textEtract = new StringBuilder(); var doc = new IndexDocumentInfo(); doc._hasCustomField = node is IHasCustomIndexField; var ixnode = node as IIndexableDocument; var faultedFieldNames = new List <string>(); 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().ToLowerInvariant(), Field.Store.YES, Field.Index.ANALYZED); doc.AddField(LucObject.FieldName.OwnerId, node.OwnerId, Field.Store.YES, true); 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 (ForbiddenFields.Contains(field.Name)) { continue; } if (PostponedFields.Contains(field.Name)) { continue; } if (node.SavingState != ContentSavingState.Finalized && (field is BinaryField || SkippedMultistepFields.Contains(field.Name))) { continue; } if (skipBinaries && (field is BinaryField)) { if (TextExtractor.TextExtractingWillBePotentiallySlow((BinaryData)((BinaryField)field).GetData())) { doc.HasBinaryField = true; continue; } } IEnumerable <IndexFieldInfo> lucFields = null; string extract = null; try { lucFields = field.GetIndexFieldInfos(out extract); } catch (Exception) { faultedFieldNames.Add(field.Name); } if (!String.IsNullOrEmpty(extract)) // do not add extra line if extract is empty { try { textEtract.AppendLine(extract); } catch (OutOfMemoryException) { SnLog.WriteWarning("Out of memory error during indexing.", EventId.Indexing, properties: new Dictionary <string, object> { { "Path", node.Path }, { "Field", field.Name } }); } } if (lucFields != null) { foreach (var lucField in lucFields) { fieldNames.Add(lucField.Name); doc.AddField(lucField); } } } } var isInherited = true; if (!isNew) { isInherited = node.IsInherited; } doc.AddField(LucObject.FieldName.IsInherited, 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); if (faultedFieldNames.Any()) { doc.AddField(LucObject.FieldName.IsFaulted, BooleanIndexHandler.YES, Field.Store.YES, Field.Index.NOT_ANALYZED); foreach (var faultedFieldName in faultedFieldNames) { doc.AddField(LucObject.FieldName.FaultedFieldName, faultedFieldName, Field.Store.YES, Field.Index.NOT_ANALYZED); } } ValidateDocumentInfo(doc); return(doc); }
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; }