Пример #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 override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            SuggesterIndexDefinition indexDefinition = value as SuggesterIndexDefinition;

            if (indexDefinition == null)
            {
                return;
            }
            JObject jobject = JObject.FromObject(indexDefinition.AnalyzerDefinitions, serializer) ?? new JObject();
            IEnumerable <JToken> jtokens1 = indexDefinition.Fields.Select(f => JToken.FromObject(f, serializer));
            IEnumerable <JToken> jtokens2 = indexDefinition.ScoringProfiles.Select(p => JToken.FromObject(p, serializer));
            IEnumerable <JToken> jtokens3 = indexDefinition.Suggesters.Select(p => JToken.FromObject(p, serializer));

            jobject.AddFirst(new JProperty("fields", new JArray(jtokens1)));
            jobject.Add(new JProperty("scoringProfiles", new JArray(jtokens2)));
            jobject.Add(new JProperty("suggesters", new JArray(jtokens3)));
            jobject.WriteTo(writer);
        }