Java全文检索引擎Lucene的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Document doc = new Docum ent( ) ;
Reader txtReader = new; FileReader ( dataFiles [ i ] ) ; doc. add ( Field. Text ( “path”, dataFiles [ i ] ) ; doc. add ( Field. Text ( “contents”, txtReader) ; indexW riter. addDocum ent ( doc) ; } 程序遍历了目录下面的所有文本文档 , 并为每 1
作者单位 : 山东省医药卫生科技信息研究所 (山东 济南 250062)
作者简介 : 张睿 (1979 - ) , 女 , 工程硕士 , 助理工程师 。
Lucene是一个高性能的 JAVA 全文检索工具包 , 作为一个开放源代码项目 , Lucene 从问世之后 , 引 发了巨大反响 , 程序员不仅使用它构建具体的全文 检索应用 , 而且将之集成到各种系统软件中 [ 3 ] 。
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
职业卫生与病伤 2007年 12月第 22卷第 4期 Journal of Occupational Health and Damage, Dec120071Vol122, No14
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
个文本文档创建了一个 Document对象 。然后把文本 文档的两个属性 : 路径和内容加入到了两个 Field对 象中 , 接着在把这两个 Field 对象加入到 Document 对象中 , 最后把这个文档用 IndexW riter类的 add方 法加入到索引中去 , 这样就完成了索引的创建 。 412 利用 Lucene进行搜索
term = new Term ( “contents”, strSearchWord. toLowerCase) termQuery = new TermQuery ( term ) ; H its ht = search. search ( termQuery) ; Printfile ( ) ; } 在上面程序中 , 类 IndexSearcher以只读的方式 打开了一个索引 。然后程序构造了一个 Term 对象 , 通过这个 Term 对象 , 指定了要在文档的内容中搜索 包含关键词 “lucene”的文档 。接着利用这个 Term 对象构造出 TermQuery对象并把这个 TermQuery对象 传入到 IndexSearcher的 search 方法中进行查询 , 返 回的结果保存在 H its对象中 。最后用了一个循环语 句把搜索到的文档的路径都打印了出来 。
随着数据库技术和数据库管理系统的广泛应用 , 全球范围内数据库中存储的数据量急剧增大 , 有些 面向科学研究数据库的数据量非常惊人 。庞大的数 据靠人工处理是非常困难的 , 人们需要较高层次的 搜索引擎技术 , 以便从庞杂的数据中找出规律 , 快 速检索出所需数据 , 从而帮助更好地进行决策和研 究 。Lucene是一个开放源程序的搜索引擎 , 利用它 可以轻易地为 Java软件 (Java语言提供了一种表达概 念的方式 。如果使用得当 , 随着问题变得更庞大更 复杂 , 这种表达工具将会比别的可供选择的语言更 为简单 、灵活 [ 1 ] 。)加入全文搜索功能 , 可使全文检 索的搜索效率比传统的逐字比较大大提高 。现介绍 Lucene全文检索引擎技术的背景和初步应用 。
Lucene是 apache 软件基金会 jakarta 项目组的 1 个子项目 , 是 1个开放源代码的全文检索引擎工具包 及架构 , 提供了完整的查询引擎和索引引擎 , 实现 了一些通用的分词算法 , 预留很多词法分析器接口 , 但它不是一个完整的全文索引应用 , 而是一个用 Java 写的全文索引引擎工具包 , 可以方便的嵌入到各种 应用中实现针对应用的全文检索功能 。
1 搜索引擎 Lucene的应用背景 搜索引擎的使用已成为既收发电子邮件后的第
二大互联网应用技术 。搜索引擎起源于传统的信息 全文检索理论 , 即计算机程序通过扫描每 1篇文章中 的每 1个词 , 建立以词为单位的到排文件 , 检索程序 根据检索词在每 1篇文章中出现的频率和每 1个检索 词在 1篇文章中出现的概率 , 对包含这些检索词的文 章进行排序 , 最后输出排序的结果 [ 2 ] 。
5 小结 Lucene是一个面向对象的全文索引引擎的典范 ,
它提供了灵活的应用接口设计以及一些适合大多数 应用的语言分析器 (Lucene. analysis) , 适应于各种 大型数据库及系统集成软件 , 提高了检索查询效率 , 这些都值得进一步的学习和研究 。
6 参考文献
[ 1 ] B ruce Exkel. Java编程思想 [M ]. 2 版. 北京 : 机械工 业出版社 , 2002: 2 - 5.
……
public class txtSerach { String strSearchWord = “ lucene”; File indexD ir = new File ( “D: \ \ index”) ; FSD irectory directory = FSD irectory. getD irectory ( indexD ir, false) ; IndexSearcher search = new IndexSearcher ( directory) ;
职业卫生与病伤 2007年 12月第 22卷第 4期 Journal of Occupational Health and Damage, Dec120071Vol122, No14
【情报信息 】
Java全文检索引擎 Lucene的应用
张睿 , 贾培民
[关键词 ] Java; 检索引擎 ; 应用 [中图分类号 ] G25217 [文献标识码 ] C [文章编号 ] 1006 - 172X (2007) 04 - 334 - 02
4 L ucene的应用示例及代码简析 本文使用的是 lucene1. 4 包 , 因为它应用广泛 ,
可以在 google中找到下载 。 411 对文本文件建立索引和搜索
……
{public static void m ain ( String [ ] args) { File indexD ir = new File (“D: \ \ index”) ; / / 索引后的目录 File indexData = new File ( “D: \ \ data”) ; / / txt文件所在目录 Analyzer analyzer = new StandarAnalyzer( ) ; File [ ] dataFiles = indexData. listFiles ( ) ; IndexW riter indexW riter = new IndexW riter ( index2 D ir, analyzer, true) ; / / true为建立一个新的索引 , 否则在原有基础上 建立 Traversal Docum ent ( ) ; / /遍历目录下面的所有 文本文档
[ 2 ] 车东. 在应用中加入全文检索功能 2基于 Java的全文索引 引 擎 Lucene 简 介 [ EB /OL ]. http: / /www. chedong. com / tech / lucene. htm l.
[ 3 ] 李玮 , 李利. W eb搜索引擎与全文检索技术 [ J ]. 情报 科学 , 2003, 24 ( 5) : : 2652268. (收稿日期 : 2007 - 04 - 20)
2 L ucene的特点及优势 作为一个开放源代码项目 , Lucene以其开放源代
码的特性 、优异的索引结构 、良好的系统架构获得 了越来越多的应用 。Lucene的优点 : ①索引文件格 式独立于应用平台 。Lucene定义了一套以 8位字节为 基础的索引文件格式 , 使得兼容系统或者不同平台 的应用能够共享建立的索引文件 。 ②在传统全文检 索引擎的倒排索引的基础上 , 实现了分块索引 , 能 够针对新的文件建立小文件索引 , 提升索引速度 。 然后通过与原有索引的合并 , 达到优化的目的 。 ③ 优秀的面向对象的系统架构 , 使得对于 Lucene扩展 的学习难度降低 , 方便扩充新功能 。 ④设计了独立 于语言和文件格式的文本分析接口 , 索引器通过接 受 Token流完成索引文件的创立 , 用户扩展新的语言 和文件格式 , 只需要实现文本分析的接口 。 ⑤已经 默认实现了一套强大的查询引擎 , 用户无需自己编 写代码即使系统可获得强大的查询能力 , Lucene的 查询实现中默认实现了布尔操作 、模糊查询 、分组 查询等等 。
3 L ucene程序运行机制 Lucene搜索引擎 , 其功能强大 , 实现复杂 , 但
从根本上说 , 主要包括 2 个主要功能 : ①建立索引 库 , 也就是将待索引的纯文本内容 , 经切分词后索 引入库 ; ②检索索引库 , 即根据查询条件从索引库 中找出符合条件的文档 。 311 建立索引库 首先 , 建库者定义入库文档的结 构 , 要把数据库内容加载到全文检索库 , 入库文档
结构与关系数据库中表的行结构类似 , 每个入库的 文档由多个域组成 。其次 , 对于文档中需要切分词 的域 , 系统使用语言解析器 (Lucene. analysis)对其 切分词 , 形成 1 个 Token, Token是 lucene在建立索 引时直接处理的最小单位 , 简单的讲 Token就是 1个 词和所在域值的组合 。最后 , 切分Hale Waihona Puke Baidu的 Token通过索 引器 (Lucene. index)的处理 , 最终加入到索引库中 , 存储器 (Lucene. store)负责数据存储管理 , 主要包括 一些底层的 I/O 操作 。 312 检索索引库 首先 , 输入查询条件 , 查询条件 传入搜索器 (Lucene. search) , 搜索器里有 1 个查询 解析器 (Lucene. quaryParser) , 搜索器调用查询解析 器来解释查询条件 。然后 , 解释后的查询条件被传 到语言解析器 (Lucene. analysis)中进行分词 。最后 , 查询器根据这个条件去检索事先已建立好的索引库 , 得到查询结果 , 并返回结果集 Lucene. search. H its。
相关文档
最新文档