internal IndexData GetIndexData(IIndexable indexable, IProviderUpdateContext context) { Assert.ArgumentNotNull(indexable, "indexable"); Assert.ArgumentNotNull(context, "context"); Assert.Required((index.Configuration.DocumentOptions as AzureDocumentBuilderOptions), "IDocumentBuilderOptions of wrong type for this crawler"); AzureDocumentBuilder documentBuilder = (AzureDocumentBuilder)ReflectionUtil.CreateObject(context.Index.Configuration.DocumentBuilderType, new object[2] { indexable, context }); if (documentBuilder == null) { CrawlingLog.Log.Error("Unable to create document builder (" + context.Index.Configuration.DocumentBuilderType + "). Please check your configuration. We will fallback to the default for now.", (Exception)null); documentBuilder = new AzureDocumentBuilder(indexable, context); } documentBuilder.AddSpecialFields(); documentBuilder.AddItemFields(); documentBuilder.AddComputedIndexFields(); documentBuilder.AddBoost(); var indexData = new IndexData(index, indexable, documentBuilder); index.AzureSchema.AddAzureIndexFields(indexData.Fields.Where(f => f.Name != indexData.UpdateTerm.Name).ToList()); index.AzureSchema.BuildAzureIndexSchema(indexData.UpdateTerm, indexData.FullUpdateTerm); return indexData; }
public IndexData(ISearchIndex index, IIndexable indexable, AzureDocumentBuilder documentBuilder) : this(index, indexable, documentBuilder.Document, documentBuilder.CollectedFields) { }