LUCENE初级介绍

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

检索过程
1
Searcher searcher = new IndexSearcher(indexPath); //查询解析器:使用和索引同样的语言分析器 Query query = QueryParser.parse(queryString, “body”, new SimpleAnalyzer());//分析查询 Hits hits = searcher.search(query);//搜索结果使用Hits存储 Document document = hits.doc(i);//得到匹配的文档 String contents=document.get(“contents”);//得到文件的内容 String path=document.get(“path”);//得到保存文件的路径
Lucene初级使用说明
概要
Lucene的简介 Lucene的使用
Lucene简介
Lucene是什么
Lucene是基于Java的全文检索引擎,一个高性 能、可伸缩的信息搜索(IR)库,它不是一个完 整的搜索应用程序 ,而是一个用Java写的全文 索引擎工具包,它可以方便的嵌入到各种应用 中实现针对应用的全文索引/检索功能。是当前 与近几年内非常流行的免费的Java信息搜索(IR) 库。
Luene的确是一个面对对象设计的典范 a):所有的问题都通过一个额外抽象层来方便以后的扩展和重用:你可以通过 重新实现来达到自己的目的,而对其他模块不需要; b):简单的应用入口Searcher, Indexer,并调用底层一系列组件协同的完成搜索 任务; c):所有的对象的任务都非常专一:比如搜索过程:QueryParser分析将查询语 句转换成一系列的精确查询的组合(Query),通过底层的索引读取结构 IndexReader进行索引的读取,并用相应的打分器给搜索结果进行打分/排序 等。所有的功能模块原子化程度非常高,因此可以通过重新实现而不需要修 改其他模块。 d):除了灵活的应用接口设计,Lucene还提供了一些适合大多数应用的语言分 析器实现(SimpleAnalyser,StandardAnalyser),这也是新用户能够很快上手 的重要原因之一。
Lucene能做什么
Lucene使你可以为你的应用程序添加索引和搜 索能力, Lucene可以索引并能使得可以转换成文本格式 的任何数据能够被搜索。Lucene并不关心数据 的来源、格式甚至它的语言,只要你能将它转 换为文本。这就意味着你可经索引并搜索存放 于文件中的数据:在远程服务器上的web页面, 存于本地文件系统的文档,简单的文本文件, 微软Word文档,HTML或PDF文件或任何其它 能够提取出文本信息的格式。
创建索引
1
IndexWriter writer = new IndexWriter(indexPath, new SimpleAnalyzer(), true); // 用指定的语言分析器构造一个新的写索引器(第3个参数表示是否为追加索引) InputStream is = new FileInputStream(file); Document doc = new Document(); //构造包含2个字段Field的Document对象 doc.add(Field.UnIndexed(“path”,file.getPath())); //一个是路径path字段,不索引,只存储 doc.add(Field.Text("body", (Reader) new InputStreamReader(is))); //一个是内容body字段,进行全文索引,并存储 writer.addDocument(doc);//将文档写入索引 is.close(); writer.optimize();//优化索引 writer.close();//关闭写索引器
结束
谢谢大家!
创建索引
2 理解核心索引类
IndexWriter: 中心组件,这个类创建一个新的索引并且添加文档到一个已有的索引中 Directory: 是一个抽象类,代表一个Lucene索引的位置 Analyzer: 分词器,索引和检索是必须统一用一个分析器 Document: 一个Document代表字段的集合,可以把它想象为以后可获取的虚拟文档 Field: 在索引中的每个Document含有一个或多个字段,具体化为Field类
检索过程源自文库
2 理解核心搜索类
IndexSearcher : 对应创建索引的 IndexWriter Query: Query是最基本的抽象父类 Hits: Hits类是一个搜索结果(匹配给定查询的文档)文档队列指针的简单容器
检索过程
3 在整个检索过程中,语言分析器,查询分析器, 甚至搜索器(Searcher)都是提供了抽象的接口, 可以根据需要进行定制。 注意:Hits对象包含的仅仅是隐含的文档的引用。 换句话说,不是在搜索的时候立即加载,而是采 用从索引中惰性加载的方式—仅当调用 hits.doc(int)时才会加载。
Lucene使用
Lucene提供了一组简单却足够强大的核心API,只 需要最小限度地理解全文索引和搜索。你只须学 习它的几个类从而把Lucene集成到一个应用程序 中。因为Lucene是一个Java库,它并不限定要索 引和搜索的内容,这使得它比其它一些搜索程序 更具有优势。
Lucene的使用大体上可以分为 索引过程和搜索 过程。索引过程就是给指定的文件创建出索引, 搜索过程就是在一个索引中查找单词,来找出 它们所出现的文档的过程。 首先将lucene-core-2.4.0.jar部署到应用
创建索引
3 索引过程中可以看到:
a):语言分析器提供了抽象的接口,因此语言分析(Analyser)是可以 制定的, b):Lucene并没有规定数据源的格式,而只提供了一个通用的结构 (Document对象)来接受索引的输入,因此输入的数据源可以是: 数据库,WORD文档,PDF文档,HTML文档……只要能够设计相应 的解析转换器将数据源构造成成Docuement对象即可进行索引。 c):对于大批量的数据索引,还可以通过调整IndexerWrite的文件 合并频率属性(mergeFactor)来提高批量索引的效率。
Lucene小结
上面只是对Lucene的基本使用做的简单介绍,它当然有更强大的功能, 比如提供了许多优化的方法,使得其效率更高,但再强大的功能也是 围绕着基本的创建索引和检索索引来展开。 作为一个通用工具包,Lunece的确给予了需要将全文检索功能嵌入到 应用中的开发者很多的便利。
从Lucene学到更多
相关文档
最新文档