public static List <MailData> Search(IndexSearcher searcher, Query query, int maxResult) { List <MailData> results = new List <MailData>(); ScoreDoc[] hitsFound = searcher.Search(query, maxResult).ScoreDocs; MailData mail = null; foreach (var hit in hitsFound) { mail = new MailData(); Document doc = searcher.Doc(hit.Doc); mail.SentOn = doc.Get("SentOn"); mail.ReceivedOn = doc.Get("ReceivedOn"); mail.Subject = doc.Get("Subject"); mail.Body = doc.Get("Body"); mail.SenderEmailAddress = doc.Get("SenderEmailAddress"); mail.SenderName = doc.Get("SenderName"); mail.To = doc.Get("To"); mail.CC = doc.Get("CC"); mail.Categories = doc.Get("Categories"); mail.FlagRequest = doc.Get("FlagRequest"); mail.Importance = doc.Get("Importance"); mail.AttachmentNames = doc.Get("AttachmentNames"); mail.FullFileName = doc.Get("FullFileName"); mail.LastWriteTime = doc.Get("LastWriteTime"); float score = hit.Score; mail.Score = score; mail.ScoreDocDoc = hit.Doc; //vi tri co the xoa document (IndexReader) results.Add(mail); } return(results); }
public TabMailView(MailData mail) { InitializeComponent(); webBrowser1.DocumentText = mail.ToHtml(MyConfig.GetMailFolder()); }
private void BtnFind_Click(object sender, EventArgs e) { int iMaxResult = 1000; if (CheckTextBoxNotNull(TxtMaxResult)) { Int32.TryParse(TxtMaxResult.Text, out iMaxResult); } if (iMaxResult < 1) { iMaxResult = 1000; } TxtMaxResult.Text = iMaxResult.ToString(); BooleanQuery allQuery = new BooleanQuery(); TermRangeQuery queryFromTo = null; string sFrom = DateTools.DateToString(DPickerFrom.Value, DateTools.Resolution.MINUTE); string sTo = DateTools.DateToString(DPickerTo.Value, DateTools.Resolution.MINUTE); if (RdBtnSentOn.Checked) //Sent { if (DPickerFrom.Checked && DPickerTo.Checked) { queryFromTo = new TermRangeQuery("SentOn", sFrom, sTo, true, true); } else if (DPickerFrom.Checked && !DPickerTo.Checked) { queryFromTo = new TermRangeQuery("SentOn", sFrom, null, true, true); } else if (!DPickerFrom.Checked && DPickerTo.Checked) { queryFromTo = new TermRangeQuery("SentOn", null, sTo, true, true); } } else { if (DPickerFrom.Checked && DPickerTo.Checked) { queryFromTo = new TermRangeQuery("ReceivedOn", sFrom, sTo, true, true); } else if (DPickerFrom.Checked && !DPickerTo.Checked) { queryFromTo = new TermRangeQuery("ReceivedOn", sFrom, null, true, true); } else if (!DPickerFrom.Checked && DPickerTo.Checked) { queryFromTo = new TermRangeQuery("ReceivedOn", null, sTo, true, true); } } if (queryFromTo != null) { allQuery.Add(queryFromTo, Occur.MUST); } Lucene.Net.Analysis.Standard.StandardAnalyzer analyzer = MyLucene.GetAnalyzer(); if (CheckTextBoxNotNull(TxtBody)) { Query querySubject = MyLucene.GetTextQuery("Subject", TxtBody.Text, analyzer); if (ChkSubject.Checked) { allQuery.Add(querySubject, Occur.MUST); } else { BooleanQuery query2 = new BooleanQuery(); Query queryBody = MyLucene.GetTextQuery("Body", TxtBody.Text, analyzer); query2.Add(querySubject, Occur.SHOULD); query2.Add(queryBody, Occur.SHOULD); allQuery.Add(query2, Occur.MUST); } } if (CheckTextBoxNotNull(TxtReceiver)) { BooleanQuery qReceiver = new BooleanQuery(); Query qTo = MyLucene.GetTextQuery("To", TxtReceiver.Text, analyzer); Query qCC = MyLucene.GetTextQuery("CC", TxtReceiver.Text, analyzer); qReceiver.Add(qTo, Occur.SHOULD); qReceiver.Add(qCC, Occur.SHOULD); allQuery.Add(qReceiver, Occur.MUST); } if (CheckTextBoxNotNull(TxtSender)) { BooleanQuery query3 = new BooleanQuery(); Query qSender = MyLucene.GetTextQuery("SenderName", TxtSender.Text, analyzer); Query qSenderEmail = MyLucene.GetTextQuery("SenderEmailAddress", TxtSender.Text, analyzer); query3.Add(qSender, Occur.SHOULD); query3.Add(qSenderEmail, Occur.SHOULD); allQuery.Add(query3, Occur.MUST); } if (string.IsNullOrEmpty(allQuery.ToString())) { MessageBox.Show("Vui lòng chọn điều kiện", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } IndexSearcher searcher = MyLucene.GetSearcher(); lst = MyLucene.Search(searcher, allQuery, iMaxResult); searcher.Dispose(); analyzer.Dispose(); dt.Clear(); for (int i = 0; i < lst.Count; i++) { MailData mailData = lst[i]; object[] row = { i, mailData.DSentOn, mailData.SenderEmailAddress, mailData.Subject, mailData.DReceivedOn }; dt.Rows.Add(row); } bindingSource1.DataSource = dt; }