コード例 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            progressBar1.Hide();
            listBox1.Items.Clear();
            string target = textBox2.Text;
            IEnumerable <DataSample> result = Lucene.Search(target, "Content");

            if (result.Count() != 0)
            {
                foreach (DataSample v in result)
                {
                    listBox1.Items.AddRange(new string[] { v.Name });
                }
            }
            else
            {
                listBox1.Items.Add("Поиск не дал результатов. Попробуйте поменять запрос.");
            }
            listBox1.IntegralHeight      = true;
            listBox1.HorizontalScrollbar = true;
            Graphics g      = listBox1.CreateGraphics();
            int      hzSize = ((int)g.MeasureString(listBox1.Items[0].ToString(), listBox1.Font).Width + 100) * 2;

            listBox1.HorizontalExtent = hzSize;
        }
コード例 #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            progressBar1.Show();
            progressBar1.Value = 0;
            button2.Hide();
            label3.Text = "Подготовка к индексации файлов";
            Application.DoEvents();

            progressBar1.Step = 10;
            DateTime dold = DateTime.Now;

            progressBar1.PerformStep();
            //Lucene.ClearIndex();
            progressBar1.PerformStep();
            DirectoryInfo source = new DirectoryInfo("C:/Users/УРП/Downloads/");// C:/Users/УРП/Downloads/";

            label3.Text = "Проиндексировано 0 файлов";
            Application.DoEvents();

            try
            {
                FileInfo[] files = source.GetFiles("*.pdf", SearchOption.AllDirectories);
                int        D; //количество документов
                D = files.Count();
                try
                {
                    progressBar1.Step = 5;
                    Application.DoEvents();

                    if (D != 0)
                    {
                        int    indexed_docs = 0;
                        double inc          = 70 / D;
                        foreach (var f in files)
                        {
                            try
                            {
                                Lucene.AddUpdateIndex(new DataSample {
                                    Score = 1, Size = f.Length, LastModified = f.LastWriteTime, Name = f.FullName, Content = ""
                                });
                            }
                            catch (UnauthorizedAccessException uaex)
                            {
                                MessageBox.Show("Отказано в доступе к данному файлу " + f.FullName + ". " + uaex.Message + " \n Нажмите ОК чтобы продолжить.", "Сообщение об ошибке");
                                label3.Text = "Не удалось проиндексировать файл " + f.FullName;
                                Application.DoEvents();
                            }
                            indexed_docs++;
                            while (inc >= 5)
                            {
                                progressBar1.PerformStep(); inc -= 5;
                            }
                            inc        += 50 / D;
                            label3.Text = "Проиндексировано " + indexed_docs + " файла(ов) из " + D + ". (/" + f.Name + ")";
                            Application.DoEvents();
                        }
                        label3.Text = "Перестройка индексного файла.";
                        Application.DoEvents();

                        Lucene.Optimize();
                        progressBar1.PerformStep();
                        TimeSpan sp = DateTime.Now - dold;
                        MessageBox.Show(sp.ToString() + " время индексации", "Индексация завершена успешно.");
                        label3.Text = "Индексация завершена";
                    }
                    else
                    {
                        MessageBox.Show("В данной директории отсутствуют Pdf-файлы. Измените настройки и обновите приложение.", "Сообщение об ошибке");
                    }
                    Application.DoEvents();

                    progressBar1.Step = 20;
                    Application.DoEvents();
                    progressBar1.PerformStep();
                    progressBar1.PerformStep();
                }
                catch
                {
                    MessageBox.Show("В данной директории отсутствуют Pdf-файлы.", "Сообщение об ошибке");
                }
            }
            catch (DirectoryNotFoundException ex)
            {
                MessageBox.Show("Директория не найдена. Измените настройки и обновите приложение. " + ex.Message, "Сообщение об ошибке");
            }
            catch when(source == new DirectoryInfo(""))
                {
                    MessageBox.Show("Задан пустой адрес. Измените путь к директории. Измените настройки и обновите приложение.", "Сообщение об ошибке");
                }
            textBox2.Show();
            button2.Show();
            label2.Show();
            button1.Enabled = true;
        }