大家帮忙看看这段代码问题在哪,关于全文检索的

xz954103 2009-01-07 02:22:03
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);
}
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenrenhua08 2009-01-15
  • 打赏
  • 举报
回复
UP,可以单步跟踪一下。
raolei528 2009-01-13
  • 打赏
  • 举报
回复
建索引采用的分词应该与查询时对查询条件进行分词的分词器应该一致才对...............(个人意见)
zlb789 2009-01-07
  • 打赏
  • 举报
回复
up
suners 2009-01-07
  • 打赏
  • 举报
回复
跟踪调试
xz954103 2009-01-07
  • 打赏
  • 举报
回复
我的问题是:按照上面的代码只能检索英文的,数字都不行,中文有的能检索出来,有的检索不出来。
xz954103 2009-01-07
  • 打赏
  • 举报
回复
下面是搜索的。
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);
}
}
}
}

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧