public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Dictionary<string, object> propDict = serializer.Deserialize<Dictionary<string, object>>(reader); string name = propDict.First().Key; StringProperty property = new StringProperty(name); Dictionary<string, object> fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(propDict.First().Value.ToString()); FieldProperty.Deserialize(property, fieldDict); property.Analyzer = PropertyAnalyzer.Deserialize(fieldDict); property.DocValues = fieldDict.GetBool(_DOC_VALUES, StringProperty._DOC_VALUES_DEFAULT); if (property.IsAnalyzed) { property.IndexOptions = IndexOptionEnum.Find(fieldDict.GetString(_INDEX_OPTIONS, StringProperty._INDEX_OPTION_ANALYZED_DEFAULT.ToString())); property.Norms = Norms.Deserialize(fieldDict); property.OmitNorms = fieldDict.GetBool(_OMIT_NORMS, StringProperty._OMIT_NORMS_ANALYZED_DEFAULT); } else { property.IndexOptions = IndexOptionEnum.Find(fieldDict.GetString(_INDEX_OPTIONS, StringProperty._INDEX_OPTION_NOT_ANALYZED_DEFAULT.ToString())); property.Norms = Norms.Deserialize(fieldDict, false); property.OmitNorms = fieldDict.GetBool(_OMIT_NORMS, StringProperty._OMIT_NORMS_NOT_ANALYZED_DEFAULT); } property.IgnoreAbove = fieldDict.GetInt64OrNull(_IGNORE_ABOVE); property.PositionOffsetGap = fieldDict.GetInt64(_POSITION_GAP_OFFSET, StringProperty._POSITION_OFFSET_GAP_DEFAULT); property.TermVector = TermVectorEnum.Find(fieldDict.GetString(_TERM_VECTOR, StringProperty._TERM_VECTOR_DEFAULT.ToString())); return property; }
public void PASS_Serialize() { StringProperty prop = new StringProperty("name") { Analyzer = new PropertyAnalyzer(new StandardAnalyzer("standard"), new StandardAnalyzer("standard")) }; string json = JsonConvert.SerializeObject(prop); Assert.IsNotNull(json); string expectedJson = "{\"name\":{\"type\":\"string\",\"index_analyzer\":\"standard\",\"search_analyzer\":\"standard\"}}"; Assert.AreEqual(expectedJson, json); }
public void PASS_Create() { StringProperty prop = new StringProperty("name") { Analyzer = new PropertyAnalyzer(new StandardAnalyzer("standard"), new StandardAnalyzer("standard")) }; Assert.IsNotNull(prop); Assert.AreEqual(IndexSettingEnum.Analyzed, prop.Index); Assert.AreEqual("name", prop.Name); Assert.AreEqual("name", prop.IndexName); Assert.AreEqual("standard", prop.Analyzer.IndexAnalyzer.Name); Assert.AreEqual("standard", prop.Analyzer.SearchAnalyzer.Name); }