예제 #1
0
        /// <summary>
        /// Straight from the base class, however added Suggesters to the index definition
        /// </summary>
        /// <param name="sourceIndexDefinition">Source index definition</param>
        /// <param name="incomingFields">Incoming fields</param>
        /// <returns></returns>
        protected override ContentSearch.Azure.Models.IndexDefinition SyncRemoteService(ContentSearch.Azure.Models.IndexDefinition sourceIndexDefinition, IEnumerable <IndexedField> incomingFields)
        {
            IEnumerable <IndexedField> mainFields = sourceIndexDefinition?.Fields ?? new List <IndexedField>();

            incomingFields = incomingFields ?? new List <IndexedField>();
            bool isModified1;
            IEnumerable <IndexedField> indexedFields = MergeFields(mainFields, incomingFields, out isModified1);

            if (!isModified1 && sourceIndexDefinition != null)
            {
                return(new IndexDefinition(sourceIndexDefinition.AnalyzerDefinitions, indexedFields, sourceIndexDefinition.ScoringProfiles, (sourceIndexDefinition as IndexDefinition)?.Suggesters));
            }
            ContentSearch.Azure.Models.IndexDefinition index = ManagmentOperations.GetIndex();
            if (index == null)
            {
                AnalyzerDefinitions          analyzers       = AnalyzerRepository.GetAnalyzers();
                IEnumerable <ScoringProfile> scoringProfiles = ScoringProfilesRepository?.ScoringProfiles;
                IndexDefinition indexDefinition = new IndexDefinition(analyzers, indexedFields, scoringProfiles, new Suggester[] { new Suggester {
                                                                                                                                       Name = Configuration.Settings.GetSetting("AzureSearchSuggesterName"), SearchMode = "analyzingInfixMatching", SourceFields = Configuration.Settings.GetSetting("AzureSearchSuggesterFields").Split(',').ToList()
                                                                                                                                   } });
                ManagmentOperations.CreateIndex(indexDefinition);
                return(indexDefinition);
            }
            bool isModified2;
            IEnumerable <IndexedField> fields           = MergeFields(index.Fields, indexedFields, out isModified2);
            IndexDefinition            indexDefinition1 = new IndexDefinition(index.AnalyzerDefinitions, fields, index.ScoringProfiles, (index as IndexDefinition)?.Suggesters);

            if (isModified2)
            {
                ManagmentOperations.UpdateIndex(indexDefinition1);
            }
            return(indexDefinition1);
        }
예제 #2
0
 public CloudIndexDefinition(AnalyzerDefinitions analyzerDefinitions, IEnumerable <IndexedField> fields) : base(analyzerDefinitions, fields)
 {
 }
 public SuggesterIndexDefinition(AnalyzerDefinitions analyzerDefinitions, IEnumerable <IndexedField> fields, IEnumerable <ScoringProfile> scoringProfiles, IEnumerable <Suggester> suggesters = null)
     : base(analyzerDefinitions, fields, scoringProfiles)
 {
     Suggesters = suggesters;
 }