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);
}
{
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);
}
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);
}
}
}
}