专注ASP.NET和SQLServer2008 BI&GIS

骂别人不革命,便是革命者,则自己不做事,而骂别人的事做得不好,自然便是更做事者。
若与此辈理论,可以被牵连到白费唇舌,一事无成,也就是白活一世,于己于人,都无益处。
我现在得了妙法,是谣言不辩,诬蔑不洗,只管自己做事。——鲁迅1934年6月21日信
posts - 252, comments - 1228, trackbacks - 27, articles - 6
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

Lucene.NET 2.0示例代码

Posted on 2007-11-22 12:35 aspnetx 阅读(698) 评论(6)  编辑 收藏
public void Test1()
{
 //建立一个内存目录
 Lucene.Net.Store.RAMDirectory ramDir = new Lucene.Net.Store.RAMDirectory();

 //建立一个索引书写器
 IndexWriter ramWriter = new IndexWriter(ramDir,new ChineseAnalyzer(), true);

 //要索引的词,这就相当于一个个的要索引的文件
 string[] words = {"
中华人民共和国", "人民共和国", "人民","共和国"}; 

 //循环数组,创建文档,给文档添加字段,并把文档添加到索引书写器里
 Document doc = null; 
 for (int i = 0; i < words.Length; i++)
 {
  doc = new Document();
  doc.Add(Field.Text("contents", words[i]));
  ramWriter.AddDocument(doc);
 }

 //索引优化
 ramWriter.Optimize();

 //关闭索引读写器,一定要关哦,按理说应该把上面的代码用try括主,在finally里关闭索引书写器
 ramWriter.Close();

 //构建一个索引搜索器
 IndexSearcher searcher = new IndexSearcher(ramDir);

 //QueryParser.Parse方法实例化一个查询
 Query query = QueryParser.Parse("
中华人民","contents",new ChineseAnalyzer());

 //获取搜索结果
 Hits hits = searcher.Search(query);

 //判断是否有搜索到的结果,当然你也可以遍历结果集并输出
 if (hits.Length() != 0)
  MessageBox.Show("
");
 else
  MessageBox.Show("
没有
");
}

Feedback

#1楼    回复  引用  查看    

2007-11-23 21:16 by ithurricane      
ChineseAnalyzer是Lucene自带的分词组件吗?

#2楼 [楼主]   回复  引用  查看    

2007-11-24 11:06 by aspnetx      
@ithurricane
是的

#3楼    回复  引用  查看    

2007-11-24 23:39 by 阿不      
不对吧,里没有带ChineseAnalyzer吧?

#4楼 [楼主]   回复  引用  查看    

2007-11-28 13:11 by aspnetx      
@阿不
是的,不过只是个简单的参考示例而已

#5楼    回复  引用    

2008-05-27 14:03 by grassland [未注册用户]
doc.Add(Field.Text("contents", words[i]));

2.0里面能够这样用吗?
Field.Text

#6楼    回复  引用  查看    

2008-06-16 16:50 by 菜无罪1      
QueryParser.Parse("中华人民","contents",new ChineseAnalyzer());
2.0这个会出错..

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交