private void AddTagValue(JObject doc, AlgoliaTagConfig tagConfig, JToken fieldValue) { var tagValues = new List <string>(); var fieldValues = fieldValue as JArray; if (fieldValues != null) { List <string> values = tagValues; fieldValues.ForEach(t => values.Add((string)t)); } else { tagValues.Add((string)fieldValue); } if (!string.IsNullOrWhiteSpace(tagConfig.TagPreffix)) { tagValues = tagValues.Select(t => tagConfig.TagPreffix + t).ToList(); } tagValues = tagValues.Distinct().ToList(); var jtags = (JArray)doc[TagsFieldName] ?? new JArray(); var tags = jtags.ToObject <string[]>(); tags = tags.Union(tagValues).ToArray(); doc[TagsFieldName] = new JArray(tags); }
public void AddTagConfig(AlgoliaTagConfig tag) { if (tag == null) { throw new ArgumentNullException(nameof(tag)); } _tagsConfig.Add(tag); }
private void AddTag(JObject doc, AlgoliaTagConfig tagConfig) { var fieldValue = doc[tagConfig.FieldName]; if (fieldValue == null) { return; } if (tagConfig.HideField) { doc.Remove(tagConfig.FieldName); } AddTagValue(doc, tagConfig, fieldValue); }