/// <summary> /// Removes the message field from the document /// </summary> public void DeleteMessage(int topicId, int messageId) { if (!Config.Enabled) { return; } var writer = GetWriter(); Document doc = null; using (var searcher = new IndexSearcher(writer.GetReader())) { doc = searcher.SearchById(topicId); } if (doc == null) { return; } doc.RemoveMessage(messageId); writer.Update(topicId, doc, Analyzer, Config); writer.Commit(); }
/// <summary> /// Updates the document fields /// </summary> public void Update(Topic topic) { if (!Config.Enabled) { return; } var writer = GetWriter(); Document doc = null; using (var searcher = new IndexSearcher(writer.GetReader())) { doc = searcher.SearchById(topic.Id); } if (doc == null) { return; } doc.GetDescriptionField().SetValue(topic.Description); doc.GetTitleField().SetValue(topic.Title); doc.GetTagsField().SetValue(topic.Tags.ToString()); writer.Update(topic.Id, doc, Analyzer, Config); writer.Commit(); }
/// <summary> /// Adds the message as document (topic) field /// </summary> /// <param name="topic"></param> public void Add(Message message) { if (!Config.Enabled) { return; } if (message.Id > Config.MaxMessages) { return; } var writer = GetWriter(); Document doc = null; using (var searcher = new IndexSearcher(writer.GetReader())) { doc = searcher.SearchById(message.Topic.Id); } if (doc == null) { return; } var dateField = doc.GetDateField(); dateField.SetValue(DateTools.DateToString(message.Date, DateTools.Resolution.MINUTE)); doc.Add(message.ToField()); writer.Update(message.Topic.Id, doc, Analyzer, Config); writer.Commit(); }