Example #1
0
        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);
        }
Example #2
0
 public TabMailView(MailData mail)
 {
     InitializeComponent();
     webBrowser1.DocumentText = mail.ToHtml(MyConfig.GetMailFolder());
 }
Example #3
0
        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;
        }