public string indexpath = "F:\\index";   private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = folderBrowserDialog1.ShowDialog();
            string path;
            if (result == DialogResult.OK)
            {
                path = this.folderBrowserDialog1.SelectedPath;
                IndexWriter writer = new IndexWriter(indexpath, new StandardAnalyzer(), true); 
                FileInfo file = new FileInfo(path);
                IndexDirectory(writer,file);
                writer.Optimize();
                writer.Close();
            }
        }
        public void IndexDirectory(IndexWriter writer, FileInfo file)
        {            if (Directory.Exists(file.FullName))
            {
                String[] files = Directory.GetFileSystemEntries(file.FullName);                if (files != null)
                {
                    for (int i = 0; i < files.Length; i++)
                    {
                        IndexDirectory(writer, new FileInfo(files[i]));  //这里是一个递归
                    }
                }
            }
            else if (file.Extension == ".txt")
            {
                IndexFile(file, writer);
            }
        }        public  void IndexFile(FileInfo file,IndexWriter writer)
        {
            Document doc = new Document();
            doc.Add(Field.Keyword("filename", file.FullName));
            doc.Add(Field.Text("contents", new StreamReader(file.FullName, System.Text.Encoding.Default)));
            writer.AddDocument(doc);
        }

解决方案 »

  1.   

    下面是搜索的。
            private void button2_Click(object sender, EventArgs e)
            {
                IndexSearcher searcher = new IndexSearcher(indexpath);
                Query query = QueryParser.Parse(this.textBox2.Text, "contents", new ChineseAnalyzer());
                Hits hit = searcher.Search(query);
                printResult(hit);
            }
            void printResult(Hits hit)
            {
                if (hit.Length() == 0)
                {
                    MessageBox.Show("对不起,没有搜索到你要的结果。");
                }
                else
                {
                    for (int i = 0; i < hit.Length(); i++)
                    {
                        try
                        {
                            Document doc = hit.Doc(i);
                            MessageBox.Show("这是第" + i + "个搜索结果,文件名为" + doc.Get("filename"));
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("错误:"+ex.Message);
                        }
                    }
                }
            }