public void Update(FormatObject formatObject) { if (LocalStore.Exists(_tableName)) { var dt = LocalStore.Read(_tableName); var row = dt.AsEnumerable().Single(x => { return((x.Field <string>("SourceName") == formatObject.SourceName)); }); UpdateRow(row, formatObject); LocalStore.Write(dt, true); } else { var dt = CreateDataTable(); DataRow dr = dt.NewRow(); UpdateRow(dr, formatObject); dt.Rows.Add(dr); LocalStore.Write(dt, false); } }
public FormatObject GetLast() { if (LocalStore.Exists(_tableName)) { var row = LocalStore.Read(_tableName).AsEnumerable() .SingleOrDefault(x => { return((x.Field <string>("SourceName") == Source.SourceName)); }); if (row != null) { var date = row.Field <DateTime>("LocalDateTime"); return(new FormatObject( row.Field <string>("SourceName"), new DateTimeOffset(date, Source.TimeZoneInfo.GetUtcOffset(date)), Source.TimeZoneInfo)); } else { return(default(FormatObject)); } } else { return(default(FormatObject)); } }
public FormatObject GetLast() { if (LocalStore.Exists(Source.SourceName)) { var row = LocalStore.Read(Source.SourceName).AsEnumerable() .SingleOrDefault(x => { return((x.Field <string>("SourceName") == Source.SourceName)); }); if (row != null) { return(new FormatObject( row.Field <string>("SourceName"), row.Field <DateTime>("LocalDateTime"))); } else { return(default(FormatObject)); } } else { return(default(FormatObject)); } }
public byte[] ProcessQuery(byte[] bytes) { try { Packet packet = Serializer.DeserializeFromBytes <Packet>(bytes); string type = System.Text.Encoding.UTF8.GetString(packet.Data); //如果是文本搜索 if (type == "Text-Query") { string currentTextQuery = GetGlobalCache <string>("Current-Text-Query"); if (!string.IsNullOrEmpty(currentTextQuery)) { string query = GetGlobalCache <string>(currentTextQuery); WriteToConsole("Get Text Query:" + query); string[] keywords = segment.Split(query); List <string> docs = TextFragment.FindCommonDocumentByKeys(keywords, 10); string content = string.Empty; string bestQuestion = string.Empty; decimal bestQuesVal = 0; foreach (var doc in docs) { Template.Question question = DataStore.Read(int.Parse(doc)); Tuple <string, decimal> tuple = question.GetBestQuestion(query); if (tuple.Item2 > bestQuesVal) { bestQuesVal = tuple.Item2; bestQuestion = tuple.Item1; } content += question.ToString() + ";"; } string inputResultKey = Dns.GetHostName() + "," + _searchPort + query; WriteToConsole("Result write into cache key=" + inputResultKey + ", count=" + docs.Count); foreach (var keyword in keywords) { if (keyword.Length > 0) { content = content.Replace(keyword, "<strong>" + keyword + "</strong>"); } } if (bestQuestion.Length > 0 && bestQuesVal > (Decimal)0.1) { content = bestQuestion + ";" + content; } SetGlobalCache(inputResultKey, content); } } //如果是相关搜索 else if (type == "Relative-Query") { string result = string.Empty; string currentRelativeQuery = GetGlobalCache <string>("Current-Relative-Query"); if (!string.IsNullOrEmpty(currentRelativeQuery)) { string query = GetGlobalCache <string>(currentRelativeQuery); WriteToConsole("Get Relative Query:" + query); List <Tuple <string, double> > tuples = RelativeTable[query].GetAllKeyValue(20); string inputResultKey = Dns.GetHostName() + "," + _searchPort + query; if (tuples == null) { tuples = new List <Tuple <string, double> >(); } foreach (var tuple in tuples) { result += tuple.Item1 + ":" + tuple.Item2 + ";"; } SetGlobalCache(inputResultKey, result); } } } catch (Exception exception) { Logger.Warn(exception); } return(Serializer.SerializeToBytes(true)); }