Lucene中的基本概念:Term (词) Document(文档) Field(字段(和数据库字段类似)) Query(查询) QueryParser(查询解析器) IndexWriter(负责生成索引并存储)
IndexReader(读取硬盘中的索引文件并存入内存) Hits(命中 我也不能很好的翻译这个词的意思 就是返回搜索的数据)
Lucene。net的基本使用方法
1 public void CreateIndex()//创建索引 2 { 3 Document doc = new Document(); 4 doc.Add(new Field("name", "我是郭志奇", Field.Store.YES, Field.Index.NOT_ANALYZED)); 5 doc.Add(new Field("val", "", Field.Store.YES, Field.Index.ANALYZED)); 6 IndexWriter writer = new IndexWriter(FSDirectory.Open(new DirectoryInfo("")), new Standard Analyzer(), true, IndexWriter.MaxFieldLength.LIMITED); 7 writer.AddDocument(doc); 8 writer.Optimize(); 9 writer.Close(); 10 } 11 12 13 public void Search(string queryString, int num)//搜索 14 { 15 IndexReader reader = IndexReader.Open("", true); 16 IndexSearcher searcher = new IndexSearcher(reader); 17 //创建查询 18 Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29); 19 QueryParser parser = new QueryParser("", analyzer); 20 Query query = parser.Parse(queryString); 21 TopScoreDocCollector collector = TopScoreDocCollector.create(num, true); 22 Hits hits = searcher.Search(query); 23 //以后就可以对获取到的collector数据进行操作 24 for (int i = 0; i < hits.Length(); i++) 25 { 26 Document doc = hits.Doc(i); 27 Field keyFieldVal = doc.GetField("key"); 28 string strKey = keyFieldVal.StringValue();//获取到Field 键值key的值 29 } 30 } 31 public void DeleteIndex()//删除索引 32 { 33 34 IndexWriter writer = new IndexWriter(FSDirectory.Open(new DirectoryInfo("")), new Standard Analyzer(), true, IndexWriter.MaxFieldLength.LIMITED); 35 writer.DeleteAll();//删除所有的索引 36 writer.DeleteDocuments(new Term("key", "val"));//删除该词条 37 //注意 在执行这个删除操作的时候,其实lucene本身并没有将数据从硬盘删除,而是保存到了一个单独的后缀名为.del的文件中。 38 writer.Commit();//进行提交操作 标记为删除的索引会被从硬盘删除 39 40 }
Lucene可以进行的操作方法有很多,分词器也有很多,但是Lucene.net自带的分词器不能很好的支持中文,因此对于有中文的搜索我推荐盘古分词,很好很强大。
还有一点用惯.net的朋友使用Lucene.net的时候会觉得不习惯,因为在.net中是属性的东西,在Lucene.net中是用方法表示的,因为据我所知,在Java中是不存在和.net中的属性一说的。
索引:
Asp.net MVC 使用Autofac的简单使用 IOC (2012-12-12 13:16) | 8 | 649 | 547 | |||
Asp.net MVC 仿照博客园的简单网站首页 列表设计 (2012-12-11 22:21) | 发布 | 12 | 928 | 277 | ||
为什么要从Web form过渡到MVC中 (2012-12-09 22:43) | 发布 | 88 | 5253 | 478 | ||
Asp.net MVC3 企业网站系统高仿博客园 首页左侧列表页面 实现效果 (2012-12-08 19:11) | 发布 | 41 | 2506 | 361 | ||
Asp.net MVC 3 开发企业网站系统仿照博客园部分功能--总体设计 (2012-12-05 23:41) | 发布 | 36 | 2064 | 515 | ||
Asp.net MVC 3 开发简单的企业系统开篇--数据库 (2012-12-03 21:03) | 发布 | 43 | 3016 | 351 | ||
Asp.net MVC 3 开发一个简单的企业网站系统 (2012-12-02 21:09) |