internal static void Deserialize(FieldProperty field, Dictionary<string, object> fieldDict) { MappingBase.Deserialize(field, fieldDict); field.IncludeInAll = fieldDict.GetBool(_INCLUDE_IN_ALL, _INCLUDE_IN_ALL_DEFAULT); field.Boost = fieldDict.GetDouble(_BOOST, _BOOST_DEFAULT); if (fieldDict.ContainsKey(_COPY_TO)) { try { field.CopyTo = JsonConvert.DeserializeObject<IEnumerable<string>>(fieldDict.GetString(_COPY_TO)); } catch { field.CopyTo = new List<string>(){ fieldDict.GetString(_COPY_TO) }; } } field.DocValuesFormat = DocValuesFormatEnum.Find(fieldDict.GetString(_DOC_VALUES_FORMAT, _DOC_VALUES_FORMAT_DEFAULT.ToString())); if(fieldDict.ContainsKey(_FIELD_DATA)) { field.FieldData = FieldDataFilter.Deserialize(JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.GetString(_FIELD_DATA))); } if(fieldDict.ContainsKey(_FIELDS)) { field.Fields = JsonConvert.DeserializeObject<DocumentPropertyCollection>(fieldDict.GetString(_FIELDS)); } field.IndexName = fieldDict.GetString(_INDEX_NAME, field.Name); if(fieldDict.ContainsKey(_NULL_VALUE)) field.NullValue = fieldDict[_NULL_VALUE]; field.PostingsFormat = PostingFormatEnum.Find(fieldDict.GetString(_POSTINGS_FORMAT, _POSTINGS_FORMAT_DEFAULT.ToString())); field.Similarity = SimilarityAlgorithmEnum.Find(fieldDict.GetString(_SIMILARITY, _SIMILARITY_DEFAULT.ToString())); }
internal static void Serialize(FieldProperty field, Dictionary<string, object> fieldDict) { if (field == null) return; if (fieldDict == null) fieldDict = new Dictionary<string, object>(); fieldDict.AddObject(_TYPE, field.PropertyType.ToString(), _PROPERTY_TYPE_DEFAULT.ToString()); MappingBase.Serialize(field, fieldDict); fieldDict.AddObject(_INCLUDE_IN_ALL, field.IncludeInAll, _INCLUDE_IN_ALL_DEFAULT); fieldDict.AddObject(_BOOST, field.Boost, _BOOST_DEFAULT); fieldDict.AddObject(_INDEX_NAME, field.IndexName, field.Name); fieldDict.AddObject(_POSTINGS_FORMAT, field.PostingsFormat.ToString(), _POSTINGS_FORMAT_DEFAULT.ToString()); if (field.FieldData != null) fieldDict.AddObject(_FIELD_DATA, field.FieldData.Serialize()); fieldDict.AddObject(_SIMILARITY, field.Similarity.ToString(), _SIMILARITY_DEFAULT.ToString()); fieldDict.AddObject(_DOC_VALUES_FORMAT, field.DocValuesFormat.ToString(), _DOC_VALUES_FORMAT_DEFAULT.ToString()); if (field.CopyTo != null && field.CopyTo.Any(x => !string.IsNullOrWhiteSpace(x))) { int count = field.CopyTo.Count(x => !string.IsNullOrWhiteSpace(x)); if (count > 1) fieldDict.AddObject(_COPY_TO, field.CopyTo.Where(x => !string.IsNullOrWhiteSpace(x))); else fieldDict.AddObject(_COPY_TO, field.CopyTo.First(x => !string.IsNullOrWhiteSpace(x))); } fieldDict.AddObject(_NULL_VALUE, field.NullValue); if (field.Fields != null && field.Fields.Any(x => x != null)) fieldDict.AddObject(_FIELDS, new DocumentPropertyCollection(field.Fields.Where(x => x != null))); }