logo资料库

基于Lucene搜索引擎的设计与实现.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
年 卷 第 2 0 0 9 第 13 月 期 4 2 宁 波 职 业 技 术 学 院 学 报 Journal of Ningbo Polytechnic Apr, 2 0 0 9 Vol.13 No.2 基于 Lucene 搜索引擎的设计与实现 严良达 (东南大学 计算机科学与工程系, 南京 210000) 是一个强大的全文索引引擎工具包 , 的索引和搜索 应用它可以快速地开发一个搜索引擎 。 并且设计实现了一个自己的搜索引擎 , 介绍了基于英特 易搜中文搜 ——— 摘 要: Lucene 网的中文搜索引擎的系统结构 索引擎 关键词: Web; 中图分类号: TP 393.4 搜索引擎 结果表明 基于 。 , Lucene ; Lucene ,Lucene 的搜索引擎在索引和查找上的效率很高 。 文献标识码: A 文章编号: 1671-2153(2009)02-0057-04 0 引 言 / Java Lucene[1-2]是一个用 , 写的全文检索引擎工 可以方便地嵌入到各种应用中实现针对应 用户可以基于它开发出 它是一个全文检索引擎 索引引擎及部分 提供了完整的查询引擎 具包 检索功能 用的全文索引 , 各种全文搜索的应用[3-4]。 的架构 文本分析引擎 从问世之后 本文在研究分析 。 引发了开放源代码社群的巨大反响 作为一个开放源代码项目 。 运作机制的 的系统结构 ,Lucene , , 、 Lucene 、 基础上 擎 ——— 设计并实现了一个基于 , 易搜中文搜索引擎 。 的搜索引 Lucene 1 搜索引擎的结构 搜索引擎是根据用户的查询请求 , 算法从索引数据中查找信息返回给用户 证用户查找信息的精度和新鲜度 , 建立并维护一个庞大的索引数据库 引擎由网络机器人程序 据库等部分组成 系统结构如图 按照一定 为了保 搜索引擎需要 一般的搜索 索引数 索引与搜索程序 所示 。 。 、 、 。 1 。 索引数据库 Lucene 网络机器人程序 网络机器人程序 WWW 文档 建立 索引 Lucene 从数据库中搜索信息 JSP 服务器 Tomcat 浏览器 WWW 浏览器 WWW 图 1 系统结构 收稿日期: 2008-10-14 作者简介: 严良达 (1980-), 浙江宁波人 男 , , 浙江工商职业技术学院助教 在职硕士研究生 , , 从事网络和软件技术方面研究 。 2009 年第 2 期 ·· 57
宁波职业技术学院学报 。 “ 。 (a) Web Web 扫描程序 ”(Spider), 网络机器人 是一个功能很强的 网络机器人也称为 网络蜘 它 页面的同时检索其内的超链接并 中广泛使 。 程序理论上可以访问 为了保证网络机器人遍历信息的 。 需要设定一些重要的链接并制定相 蛛 可以在扫描 加入扫描队列等待以后扫描 用超链接 整个 广度和深度 , 关的扫描策略 所以一个 , 页面 Spider 因为 Web Web 。 。 , 。 (b) 如果通过 索引与搜索 SQL 为了提高检索效率 网络机器人将遍历得到的页 直接查询 需要建立 如果索引不及时 用户输入搜 面存放在临时数据库中 信息速度将会很慢 索引 更新 索条件后搜索程序将通过索引数据库进行检索 , 然后把符合查询要求的数据库按照一定的策略进 行分级排列并且返回给用户 按照倒排文件的格式存放 用户用搜索引擎也不能检索到 , , 。 , 。 , 。 服务器 询 据库进行连接 (c)Web 这就需要系统提供 客户一般通过浏览器进行查 服务器并且与索引数 客户在浏览器中输入查询条件 , 服务器接收到客户的查询条件后在索引数据 Web 。 。 Web 库中进行查询 排列 、 , 然后返回给客户端 。 2 Lucene 的索引与搜索 是 Lucene Jakarta Apache 的开源项目 Java 写的全文索引引擎工具包 个用 嵌入到各种应用中实现针对应用的全文索 引 索功能 , / 。 它是一 可以方便的 检 。 接口设计的比较通用 输入输 所以 数据库等都可以比较方便 , 字段 记录 ==> ==> , 的存储结构和接口中 。 当成一个支持全文索 全文检索的实现机制 2.1 的 Lucene API 出结构都很像数据库的表 很多传统的应用文件 的映射到 总之 可以先把 Lucene 、 , Lucene 引的数据库系统 。 2.2 Lucene 的索引效率 。 , 此 like“%keyword%” 作用的 在使用 查询时 , 于一页页翻书的遍历过程了 查询的数据库服务来说 的 ,like like 由于数据库索引不是为全文索引设 计 的 使用 时 , 因 数据库索引是不起 , 搜索过程又变成类似 所以对于含有模糊 , 对性能的危害是极大 。 如果是需要对多个关键词进行模糊匹配 “%keyword1%”and like“%keyword2%”… 就可想而知了 :like 其效率也 所以建立一个高效检索系统的关 。 · · 2009 年第 2 期 58 , , ) ( , ==> 关键词 文章映射关系 比如多篇文章 将数据源 有另外一个排好序的关键词列表 键是建立一个类似于科技索引一样的反向索引机 排序顺序存储的同 制 时 用于存储关 , 利用这样的映射关系索 键词 引 出现次数 ==> :[ 甚至包括位置 出现 ( 频率 检索过程就是把模糊查询变成多个可以利 从而大大 用索引的精确查询的逻辑组合的过程 提高了多关键词查询的效率 全文检索问题 归结到最后是一个排序问题 出现关键词的文章编号 起始偏移量 结束偏移量 所以 ), ], , , 。 , , : , 由此可以看出 模糊查询相对数据库的精确 这也是大部分数 查询是一个非常不确定的问题 , 据库对全文检索支持有限的原因 最核心 的特征是通过特殊的索引结构实现了传统数据库 不擅长的全文索引机制 以方 便针对不同应用的定制 并提供了扩展接口 。 Lucene , , 。 。 2.3 中文切分词机制 对于中文来说 , 对于英文来说 全文索引首先还要解决一个 语句中单词之间 但亚洲语言的中日韩文 首先要把语句 这个词如何切分出来就 所以 , 。 , ; 语言分析的问题 是天然通过空格分开的 语句中的字是一个字挨一个 中按 是一个很大的问题 进行索引的话 词 , “ ” , , ” 。 ” “ , ” , ”? :“ 时 ? “ 首先 上 海 北京天安门 不 能 让 含 有 (si-gram) 海 上 肯定不能用单个字符作 否 则 查 , “ 但一句话 为索引 也 匹 计算机如何按照中 ”, 还是 北京 天安门 让计算机能够按照语言习惯进 往往需要机器有一个比较丰富的词库才 另外一个 将单词按照二 北 京 天 安 在查询 将 ”, 天安 同 这种方式对 单 元 配 文的语言习惯进行切分呢 北 京 天安门 “ 行切分 能够比较准确的识别出语句中的单词 解决的办法是采用自动切分算法 元 语 法 门 的时候 查询词组按同样的规则进行切分 安门 “and” 样能够正确地映射到相应的索引中 于其他亚洲语言如韩文和日文都是通用的 , 北京 京天 天安 安门 : “ 这样 天安门 :“ ”,“ 的关系组合 多个关键词之间按与 ”。 还是查询 方 式 切 分 出 来 无论是查询 : 比 如 “ 北京 (bigram) ” ==> “ 北京 ”, 。 , , “ ” , 。 。 。 , 缺点是索引效率低 基于自动切分的最大优点是没有词表维护成 但对于中小型 实现简单 基于 而 本 应用来说 二元切分后的索引一般大小和源文件差不多 对于英文 基于二元语法的切分还是够用的 索引文件一般只有原文件的 , , , , 。 30%~40% ,
严良达 基于 : Lucene 搜索引擎的设计与实现 不同 。 2.4 Lucene Spider 与 的结合 首先构造一个 构造 Index 类如图 类用来实现对内容进行 所示 代码略 Index 2 ( )。 索引 , 然后构造一个 HTML 收集的新闻内容进行索引 图 2 构造 Index 类 解析类 如图 , 程序 bot 把通过 , 所示 。 3 图 3 构造 HTML 类 在进行大量数据搜索时 那将是非常难的 所以本文提出了使用全文搜索引擎 , , 如果使用单纯的数 速度将是极大的瓶 进 Lucene , 据库技术 颈 行索引 。 搜索 、 。 3 搜索引擎的设计与实现 3.1 Tomcat Web 的 服务器 Web 、 料查询 务器 三个步骤 器发出 。 Web 、 服务器是在网络中为实现信息发布 资 数据处理等诸多应用搭建基本平台的服 页面处理中大致可分为 浏览器向一个特定的服务 服务器接收到 第二步 页面 并将所 服务器在 第一步 寻找所请求的 ,Web ; 页面请求 ,Web Web : Web 页面请求后 , 页 面 传 送 给 Web 服务器接收到所请求的 Web Web 浏 览 器 页面 ; , Web , 第 三 步 , 并将它显 Web 请 求 的 Web 示出来 Tomcat 应 用 软 件 基 于 和 是 一 个 开 放 源 代 码 的 应 用 软 件 容 子项目支持并由来 Servlet 运 行 Web Java 、 Apache-Jakarta 社 区 的 志 愿 者 进 行 维 护 JSP Web 器 自 开 放 性 源 代 码 。 Tomcat 由 Java 是根据 和 Servlet 。 规范进行执行 JSP 也实行了 Tomcat Server Apache- 且比绝大多数商业应用软件服务器 Tomcat Server 的 因此 可以说 。 , 规范 , Jakarta 要好 。 在 3.2 Tomcat Tomcat 文件 与 , 。 JAR Archive) 程序格式 包 其根目录下包含有 种文件的目录 , 这个目录很重要 web.xml 应用的配置文件 的 文 件 和 一 个 而 或 类和 , Servlet 上部署项目 中 的 应 用 程 序 是一 个 : , 和 Jsp Web Html 。 WAR 提出的一种 是 类似 另外还会有一个 WAR (Web 应用 Sun 也是许多文件的一个压缩 通常 文件或者包含这两 目录 , 目录下有一个 目 录 是 这 个 目录下则包含编译好 所依赖的其他类 如 通 常 这 些 所 依 赖的 类 也 可 以 打 包 成 当然也可以 WEB-INF WEB-INF ,web.xml 目录下 通常在 classes classes Servlet 下的 Jsp 。 ( , 这个包中的文件按一定目录结构来组织 JavaBean)。 放到 JAR 放到系统的 WEB-INF CLASSPATH lib 中 。 在 Tomcat 中 放到 , 应用程序的部署很简单 , 目录下 只需将 WAR 你的 Tomcat 会自动检测到这个文件 访问这个应用的 时 要将 转化为 访问将会很快 Tomcat 译以后 Jsp Jsp 。 , webapp 的 并将其解压 通常第一次会很慢 ,Tomcat 在浏览器中 因为 编 , 然后编译 。 , , 文件 , Servlet 。 搜索引擎的具体实现 3.3 Lucene 文中基于 ——— Lucene 易搜中文搜索引擎 设计并实现了一个支持全文 易搜中文搜 页面中按照超连接进行解 并把搜索到的每条新闻进行索引后加入 , 然后通过 服务器接受客户端请求后 搜索的实例 索引擎是从指定的 析 数据库 从索引数据库中搜索出所匹配的新闻 搜索 Web Web 。 , 、 。 GET , 服务端设计 用户通过 (1) 术实现 交查询条件 受并分析提交参数 搜索操作 式发送至客户端 。 , , 主要利用 的 JavaTM Servlet 技 方法从客户端向服务端提 容器接 Servlet 的开发包进行 消息包的形 服务端 Tomcat Lucene HTTP 再调用 从而完成一次搜索操作 最后把搜索的结果以 服务端通过 。 。 , 程序的结构如图 所示 。 4 。 Servlet 2009 年第 2 期 ·· 59
宁波职业技术学院学报 。 客户端设计 (2) 例如 , 要 计的时候也应充分考虑实用性和简洁性 计实现的搜索引擎 就以它简洁的查询界面而闻名 图 一个良好的查询界面非常重 在设 为设 易搜中文搜索引擎的搜索结果 Googl 5 。 。 。 - 4 结束语 本文首先介绍了 , 基于 Lucene Lucene 检索的基本概念 然 的索引和 设计并实现了一个 详 后从搜索引擎的系统结构 、 搜索等方面进行详细的说明 支 持 全 文 搜 索 的 实 例 细介绍了 Lucene 实际应用可推广至许多其他的应用实例的设计与 实现 易 搜 中 文 搜 索 引 擎 的实际应用 本文介绍的 Lucene —— 。 , 。 。 图 4 服务端 Servlet 程序 图 5 搜索结果 参考文献: [1] The Apache Jakarta Project:Lucene [EB / OL]. (2003 - [2] 04)[2008-05]. http: / / jakar2ta.apache.org / lucene / . 车 东 全文索引引擎 在 应 用 中 加 入 全 文检 索 功 能 基 于 简介 ——— . Java Lucene [EB / OL]. (2002-08)[2008- 的 [3] [4] 05].http: / / www.chedong.com / tech / lucene.html. 李玮 搜索引擎与全文检索技术 李利 , . Web 情报科 [J]. 学 ,2003(5):265-268. 徐宝文 张卫丰 , . 清华大学出版社 搜索引擎与信息获取技术 [M]. 北京 : ,2003. Design and implementation of search engine based on Lucene (Southeast University School of Computer Science and Engineering, Nanjing 210000, China) YAN Liang-da Abstract: Lucene is a powerful full-text indexing engine kit. We can quickly develop a search engine with it. This paper introduces a system structure of Chinese search engine based on the Internet, the search and the index of Lucene, and the implementation of own search engine-Yisuo Chinese search engine. This fact indicates that the search engine based on Lucene is high efficient in indexing and searching. Key words: WEB; search engine; Lucene · · 2009 年第 2 期 60
分享到:
收藏