`
单眼皮大娘
  • 浏览: 111036 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

lucene 小知识

阅读更多
     以前对全文检索望而却步,认为很难玩,最近玩了下Lucene ,发现挺容易上手的。废话不多说,记下小体会。

     luncen索引用的是倒排索引技术,倒排索引和书后面的索引基本类似。其结构如下图所示:




这种结构使得lucene的检索效率高,在常数时间内一次命中所有的文档,一次I/O操作。

     Lucene建立索引非常简单,下面以创建内存索引为例。

     首先创建一个内存索引对象:
    
//建立内存索引对象
			Directory directory = new RAMDirectory();	

  
     接着配置IndexWriter:
    
//配置IndexWriterConfig
			IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_34 , analyzer);
			iwConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
			IndexWriter iwriter = new IndexWriter(directory , iwConfig);


      注意:这里的analyzer为中文分词工具,实现自己的中文分词工具很重要。
      
      剩下就是写入索引了,在写入索引的时候得先创建Document,而Document 又包含有Field。Field就是要进行索引和检索的域(我个人的理解,可能有误)
      
      
Document doc = new Document();
                  doc.add(new Field(fieldName, text, Field.Store.YES, Field.Index.ANALYZED)); 


       filedName是为了后续的检索做准备,text就是要建立索引的文本。

       可以创建多个Document,也可以把多个text写入一个Document中。

      
iwriter.addDocument(doc);
                    iwriter.close();


       剩下的代码为检索:
      
IndexReader ireader = IndexReader.open(directory);
			IndexSearcher isearcher = new IndexSearcher(ireader);			
			
			String keyword = "要检索的词条";			
			//使用QueryParser查询分析器构造Query对象
			QueryParser qp = new QueryParser(Version.LUCENE_34, fieldName, analyzer);
			qp.setDefaultOperator(QueryParser.AND_OPERATOR);
			Query query = qp.parse(keyword);
			
			//搜索相似度最高的5条记录
			TopDocs topDocs = isearcher.search(query , 5);
			System.out.println("命中:" + topDocs.totalHits);
			//输出结果
			ScoreDoc[] scoreDocs = topDocs.scoreDocs;
			for (int i = 0; i < topDocs.totalHits; i++){
				Document targetDoc = isearcher.doc(scoreDocs[i].doc);
				System.out.println("内容:" + targetDoc.toString());
			}			
       


     就这要一个建立索引和检索的小程序就可以了。lucene确实给全文检索带来了很大的方便,可以使新手快速的掌握基本知识。但是到深入还有很长的路要走。要建立好的全文检索工程代码,首先得有好的分词工具。
  • 大小: 6.3 KB
分享到:
评论

相关推荐

    基于lucene.net开发的个人知识库

    闲着无聊做的lucene的知识管理,基本的lucene的用法都有。

    lucene.ppt,lucene课件 lucene 全面知识点

    lucene.ppt,lucene课件 lucene 全面知识点,用于搜索开发

    关于lucene的小常识

    基于lucene的文献垂直搜索技术是当今火热的技术

    lucene学习

    Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词...

    自己写的一个lucene知识点集合

    自己写的一个lucene知识点集合,里面有一些常用的查询与创建,有我自己加的注释

    LUCENE5.2工具封装

    基于java的lucene 5.2的封装,主要包括lucene的各种查询方法、建索引方法的实现,为使用lucene开发者提供便利,而不需要过多的lucene知识即可使用,具体使用方法请到github上download,里面有完整的demo。...

    Lucene.Net2.3.China中文注(个别连接超时)

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...

    Lucene结合Sql建立索引

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...

    Lucene搜索引擎开发权威经典随书资源7-10

    本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精炼简洁,恰到好处。  本书包含了必要的理论,但以实践为主。所讲的理论都不是纸上谈兵,都是可以立即付诸实践进行...

    超系统学习Lucene全文检索技术视频教程

    视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 目前业界流行的ElasticSearch和Solr搜索技术底层正是使用Lucene实现的。使用全文检索技术可以构建像百度、谷歌、京东搜索、淘宝搜索等系统和功能. ...

    基于Lucene索引的分析与实现

    Lucene索引,知识工程实验报告 Lucene是一个基于java的全文检索工具包,它方便为应用程序添加索引和搜索功能

    Lucene结合Sql建立索引Demo源码.rar

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...

    Lucene搜索引擎开发权威经典随书资源1-6章

    本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精炼简洁,恰到好处。  本书包含了必要的理论,但以实践为主。所讲的理论都不是纸上谈兵,都是可以立即付诸实践进行...

    Lucene搜索引擎开发权威经典 光盘

    这本书基于Lucene的当前最新版本(2.1)精解了Lucene搜索引擎的相关知识,从基础知识到应用开发,精练简洁,恰到好处。 本书共包括16章,分为6部分。第1部分:Lucene基础。介绍了Lucene的基础知识,包括Lucene的...

    Lucene 在知识库全文检索模块中所起的作用

    Lucene目前是应用最为广泛的全文检索架构,支持对TXT(HTML),PDF,WORD,JDBC等多种文本来源的全文索引创建及全文...由于CIS系统中的信息存放方式主要有以上五种方式,所以可以通过Lucene大大提高CIS系统的信息定位速度。

    Lucene.docx

    lucene基础使用,基础知识,入门级了解用,Lucene和其他一些全文检索系统/应用的比较,语言的的切分词问题,索引过程优化

    Lucene结合Sql建立索引Demo源码

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...

    站内搜索(Lucene.net)测试

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...

    Lucene.Net2.X中文注释版源码

    Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...

Global site tag (gtag.js) - Google Analytics