首页 新闻 会员 周边

请高手帮我看看我的Lucene.net代码为什么查询没有结果

0
悬赏园豆:100 [已关闭问题]

我写了一个简单的Lucene.net的程序,运行时首先弹出对话框,提示选择需要索引的文件夹,并在此文件下建立索引文件.保存在"Index"文件夹里面(为简化,我注释掉了递归遍历子目录所有文件,目前程序只生成第一层文件的索引).

这是弹出的选择路径对话框:

 

这是程序界面:

这是我的窗体后台代码:

Code

 

这是Lucene方法类:

 

Code

 

我测试时写了四个txt文件,文件名为1.txt,2.txt,3.txt和4.txt,文件内容是分别为“1”,“2”,“3”,“4”(分别就一个字),但是我查询“1”时(其实不管查询什么)结构都是空的,查不出个所以然。

我不知道是索引建立出了问题还是什么就下载了NLuck(这是博客园的一位朋友写的分析Lucene.net索引的程序),但是这个程序不能打开我建立的索引,不过这个程序写的是能打开Lucene.net2.0-2.3的索引,我用的是Lucene.net2.4,不知道是不是我的索引的问题,还是我查询写错了的问题。

请高手帮我看看,不胜感激!

问题补充: 这个应该不是什么难题吧,只要是对Lucene较为熟悉的人应该能看出个大概,有没有人仔细看看啊。
大树下好乘凉的主页 大树下好乘凉 | 初学一级 | 园豆:100
提问于:2009-10-10 13:27
< >
分享
其他回答(1)
0

?内容怎么试Stream 为什么不是String? 你试着改成String看看

James.Ying | 园豆:1472 (小虾三级) | 2009-10-10 14:31
你是说doc.Add(new Field("Contents", new System.IO.StreamReader(f.FullName, System.Text.Encoding.Default)));这句里面吗? 这是根据Lucene.net 2.4官方源码里面的Demo写的
支持(0) 反对(0) 大树下好乘凉 | 园豆:100 (初学一级) | 2009-10-10 14:43
0

2.4 版本没有用过,你用传统方法建立一下 Field 试试看呢。

另外检查一下分词输出,当输入1,2,3,4 这样的字符时,你用的分词器分词结果是怎么输出的。

我做的盘古分词组件中附带一个用Lucene.net 建立索引和查询的例子,你可以下下来参考一下。

http://pangusegment.codeplex.com/

回应楼主:

像下面这样建立索引 2.4 版本已经不支持了吗?

field = new Field("contents", content, Field.Store.YES, Field.Index.TOKENIZED);

eaglet | 园豆:17139 (专家六级) | 2009-10-12 06:51
你是说用类似于 doc.Add(Field.key("FileName",...))和doc.Add(Field.Text(...))吗。我这两句建立Filed是在官方Demo上复制下来的,应该没问题,况且2.4根本没有"Field.key("FileName",...)"我打Filed没有类似于Key或者Text的属性。 事实上,就是因为没法用你说的方法建立,我才复制了官方Demo的相关代码。
支持(0) 反对(0) 大树下好乘凉 | 园豆:100 (初学一级) | 2009-10-12 08:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册