一种基于Lucene的中文全文检索系统

合集下载

基于Lucene的全文检索系统研究与实现

基于Lucene的全文检索系统研究与实现

、 、▲
L i s t ( 2 字 长 词)
L i s t ( 3 字 长 词)
L i s t ( 4 字 长 洲)
● ● ● ● ● ●
图2 字 典 数 据 结 构
3 . 1 . 2 基 于双 向最大 匹配 的中文分词 算法 基于 字典 的分词方 法 又叫机械 分词算 法 , 这种算 法按 照一定 的策 略将 待分 析 的汉 字 串与一 个 “ 充
7 8
浙 江外 国语 学院 学报
2 0 1 3皋
2 . 1 文 档归 一化模 块
文 档归 一化模 块 主要 完成 对待 检索文 档 的预处理 , 主要有 两个 功能 : 一是 支 持将 . p d f , . p p t , . d o c等
文本解 码并 转化为 . t x t 文件 ; 二是 对文本 内容 进行过 滤 , 取 出可 能存在 的非法 字符 和乱码 . 2 . 2 文 本分 析模块
分 大” 的机 器词典 中的词条进 行 匹配 , 若 在词 典 中 找到某 个 字 符 串 , 则 匹 配成 功 , 识 别 出一 个 词 ] . 文 中, 我们 提出 的匹配算 法是 正 向匹 配 与逆 向匹配 相 结 合 的算 法 , 算 法 流程 如 下 : ( 1 ) 导 人 待 分词 的文 本, 利用 S o u g o u词库构 建按 字长构 建字 典数据结 构 . 然后 , 将 待分 词文本 按照不 同类 型 ( 如 普通 中文 字
文 本分 析模块 主要 实现对 元文件 文档 附属信 息 的提取存 储和 通过 文本 分 析器 对 中文 内容 的分 析
与构建 倒排 索引 . 文档相 关 附属 信 息 ( 如作 者 、 时间、 单位 、 文 件存 放 目录等 ) 直 接存 储 在数 据 库 中; 而 对于摘要 内容 和正 文 内容 信息 , 由于 信息量 较大 , 我们通 过文 本分析 器实 现 中文 自动 分词 , 再 利用 L u — c e n e的索引模 块实 现倒排 索引 的 自动构 建 . L u c e n e自带 有 中文 自动 分 词 系统 , 但 性 能一 般 , 为此 我们

基于Lucene全文检索系统的研究与实现

基于Lucene全文检索系统的研究与实现

基于Lucene全文检索系统的研究与实现[摘要] lucene是一个开放源代码的全文检索引擎工具包,利用它可以快速地开发一个全文检索系统。

利用lucene开发了一个全文检索系统,通过其特殊的索引结构,实现了传统数据库不擅长的全文索引机制,提供了对非结构化信息的检索能力。

[关键词] lucene 信息检索全文检索索引一、引言计算机技术及网络技术的迅速发展,使得internet成为人类有史以来资源最多、品种最全、规模最大的信息资源库。

如何在这海量的信息里面快速、全面、准确地查找所需要的资料信息已经成了人们关注的焦点,也成了研究领域内的一个热门课题。

这些信息基本上可以分做两类:结构化数据和非结构化数据(如文本文档、word 文档、pdf文档、html文档等)。

现有的数据库检索,是以结构化数据为检索的主要目标,实现相对简单。

但对于非结构化数据,即全文数据,由于复杂的数据事务操作以及低效的高层接口,导致检索效率低下。

随着人们对信息检索的要求也越来越高,而全文检索因为检索速度快、准确性高而日益受到广大用户的欢迎, lucene是一个用java写的全文检索引擎工具包,可以方便地嵌入到各种应用中实现针对应用的全文索引和检索功能。

这个开源项目的推出及发展,为任何应用提供了对非结构化信息的检索能力。

二、全文检索策略通常比较厚的书籍后面常常附关键词索引表(比如,北京:12,34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。

而数据库索引能够大大提高查询的速度原理也是一样,由于数据库索引不是为全文索引设计的,因此,使用like “%keyword%”时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,like对性能的危害是极大的。

如果是需要对多个关键词进行模糊匹配:like“%keyword1%”and like “%keyword2%”……其效率也就可想而知了。

基于Lucene的电子政务全文检索系统的设计与实现

基于Lucene的电子政务全文检索系统的设计与实现
[ bt c] T ippr a z t —gvrm n 汕 一t t e i a ss m bsdo o sD mn .T e A s at r h ae l  ̄ i e oen et s n a y l e e te l y e ae nLt o i xrrv t u o hr e
n r v lf ai s tp s o t h n mb d e n D mio d c me t h s p p nr u e e r v l a d rt e a r v r u y e f atc me te e d d i o n o u n . T i a r it d c d a n w r t e a ei o o a e o e i
2. Hu h u C t u l e u i u e u Hu h u 3 3 0 z o i P bi S c r B ra , y c y t z o 1 0 0, C i a hn ;
3 agh uZ iuSf a ii dC m ay a ghu3 0 1 ,C ia .H n zo h i o w r Lm t o pn ,H n zo 10 2 hn ) j t e e
m t dbsd o aaL cn dt t r p nSU ecm l e t osl em n o e r l s m e v r e o ae h njv u eea h oh e l o p m n t o e t e t n po e ,g n daf o— n e e o O ̄ e v h i d bm a
[ 摘 要] 文章分析 了目前基于 D nn 平台开发 的电子政务 系统 的全文检索 系统存在着检索 内容丢失 、系统响 ofo i
应慢以及 不能针好文档中嵌入 的各 种格 式的附件作 索引和 内容查找等不足之处 , 出 于 J a u n 开疆 框架 ,并与 提 基 a ce vLe

基于Lucene的全文检索系统研究

基于Lucene的全文检索系统研究
科 学 论坛
—■I
基 于 L cn u e e的全文检 索 系统 研究
薛 萍
天津 30 8 ) 0 3 7 ( 津师 范大 学计 算机 与信 息工 程学 院 天 [ 摘 要 ] 息时代 的 到来, 信 使数据 不 仅在 数量 还是 多样 性 有 了很 大 变化 。而 L c n 全 文检 索就 是, 代信 息 检索 领域 中被 广泛 应用 的 重要 技术 之一 。所 ue e 现 以本文 首先 介 绍全文 检 索及 系统 的概 念 , 次是 L c n 其 u e e的系统 结构 和 实现 机制 。最后 讨 论使 用 L c n u e e工 具包 开发 系 统的 实 际应用 问题 。 [ 关键 词] 全文 检 索 l c n 索 引 uee 中 图分类 号 :P 9 T 3 文 献标 识码 : A 文章编 号 :09 94 (0 0 3— 4 9O 10 — 1X 2 1) 30 l l
2全文 检 素与 全 文检 索系 统 全文 搜索 就是 以文 本数据 为主 要处 理对 象, 基于全 文表 引, 使用 自然 语言 进 行检 索 的技术 。也就 是通 过计 算机 索 引程序 扫描 和分析 文 章 中的每 一个字 或 者词 , 对其相 应 的建立 一个 索 引, 来指 明它 所 出现 的 次数和 位 置 当用户查 询时, 就可 以根据 建 立好 的索 引进行 查找, 并将 结果 反馈 给用 户 的方式 。 全文搜 索是 现代信 息检索技 术 的重要分支 之一, 它是处 理非 结构化数 据 的 强大工 具, 也是搜 索 引擎 的核 心技 术之 一 全文检 索 系统是 按照 全文检 索 理论建 立起 来 的用于提 供 全文检 索服 务 的 软 件系 统。 全文检 索 系统 需要具 备建 立索 引和 提供 查询 的基 本功 能外 , 需要 还 方 便的用 户 接 口, 向万 维 网 的开发 接 口和二 次应 用 开发 接 口等等 。 面 全文 检 索系 统 的核 心 功 能具 有 建立 索 引 、处理 查 询 返 回结 果集 、增加 索 引 、优 化索 引结 构 等等 功 能 , 围则 由各种 不 同的应 用 系 统 组成 。 外

基于Lucene的全文搜索引擎的设计与实现

基于Lucene的全文搜索引擎的设计与实现
效性。
图 1 L cn u e e系 统 的 结 构 组 织 图
2 Lue e的 系统 结 构 分析 cn
2 2 og aah . cn .i e 索 引 包 是 整 个 系 统 核 心 , . r .p c e [ e e n x u d 主 要提 供 库 的读 写 接 口 , 过 该 包 可 以创 建 库 . 加 删 除 记 录 及 通 添 读 取 记 录等 。 全文 检索 的根 本 就 为 每 个 切 出来 的词 建 立 索 引 , 查 询 时 只需 要遍 历 索 引 , 不 需 要 遍 历 整 个 正 文 , 而 极 大 地 而 从 提 高 了检 索 效率 , 引 创 建 的 质 量 直 接 关 系 整 个 系统 的 质 量 。 索 L cn 的索 引 树 是 非 常 优 质 高 效 的 , 这 个 包 中 , 要 有 I . ue e 在 主 n
查 询结 果 。 图 1是 L cn ue e系 统 的结 构 组 织 图 。 2. 分析 器 An lzr 分 析 器 主 要 用 于 切 词 , 段 文 档 输 入 1 ay e 一
以后 , 过 A a zr 输 出 时 只剩 下 有 用 的 部 分 , 他部 分 被 剔 经 n l e, y 其 除 。 分析 器提 供 了抽 象 的接 口 , 因此 语 言 分 析( n l ) A a  ̄r 是可 以 y 定 制 的 。因 为 L cn 缺 省 提 供 了 2个 比较 通 用 的 分 析 器 S ue e i m. p A a s 和 Sa dr A a sr 这 2个 分 析 器 缺 省 都 不 支持 中 l e le n y r tn ad n l e, y 文 , 以 要加 入 对 中 文 语 言 的 切 分 规 则 , 要 修 改 这 2个 分 析 所 需

基于Lucene的全文检索引擎研究与应用

基于Lucene的全文检索引擎研究与应用

Ab ta tRa i c u lt no r e e tr ie fetvl n e ig ifr ain rs uc si o p lehg sr c : pd ac muai fl g nepr sefciey id xn nom t eo re st mvd ih— q ai sa c evcs o a s o uly erh sr ie . t
部分使 用l 引。
是以各种计算机数据诸 如文字 、 声音 、 图像等为处理对
象, 提供按照数据资料 的内容 而不 是外在 特征来 实现 的信息检索手段[ 。在 索引 中创建一个包含一系列用 川 户搜索条件 的查询 , 它能 帮助人们进 行大 量文档 资料
L cn 作为一个全文检索 引擎 , uee 其具 有如 下突 出 的优点 :
中图分 类号 : I 9 、 T) 13 3 文献 标识码 : A 文章 编号 :6 3 6 9 ( 0 7 0 ~0 8 —0 17 — 2 X 2 0 ) 5 14 3
Ree r h a d Applc to fFu lTe tS a c sa c n ia i n o l x e r h EngneBa e n Lu e e i sd o c n
to x mp e in e a ls
Ke r s ul e tsa c id xn a pid rsa c / en ywo d :f l—tx e rh;n e ig; p l ee rh Lu e e e
0 引 言
随着计算机技术 及 网络 技术 的迅速发 展 , 电子 文
1 基 于 Jv aa的 全 文 检 索 引 擎_Jk r a at a
Lu e e cn
档数 目急剧膨胀 , 在这海Biblioteka 的信息 里面快 速、 面、 全 准

基于Lucene的全文检索系统的研究与实现

基于Lucene的全文检索系统的研究与实现
e tb ih n u l t x ere a y t m ,t e n r d c e c n e to l— e t ere a y tm d a ay e t e sr c u e o c n y tm sa l i g f l— e t t v l se s r i s h n i t u e t o c p ff l t x t v s se a l z tu t r fLu e e s se o h u r i l n n h a d t e i lme tt n o e me h im .Fi al n mp e n a o ft c a s h i h n n y,g v e i l me t t n p o e so l- e t ere a y tm r m e s se d sg l i et mp e n a o r c s ff l t x tiv s se fo t y t m e i n, h i u r l h h e te t c n,t e i d x e t bi h n d t e e e u v n e e r h wi r c ia p ia i n.Pr c c h wst a h y tm ’ t e t x x a to r i h n e s l me ta x c t e i d x s a c t ap a t l a pl t a s n h i h c c o a d e s o t e s se h t
等 均达 到 了设 计要求 。 关 键词 : 文检 索 ; 引 ; 息检索 全 索 信 中图分类 号 : P l . T 3 15 文献 标识 码 : A 文章 编号 :6 3 6 9 2 1 )7 0
Re e r h a m p e e t to o l- x s a c nd I l m n a i n fFu l Te t

es深度分页原理

es深度分页原理

es深度分页原理
ES (Elasticsearch) 是一种基于Lucene的全文搜索引擎,它的深度分页原理涵盖了搜索、文档管理、索引和调优等多个方面。

下面简单介绍ES的深度分页原理。

在ES中,分页的原理是基于搜索结果的检索,ES默认返回10条文档。

当用户需要获取更多的结果时,就需要翻页。

ES最初使用的是深分页方法,即当用户请求某一页时,ES需要搜索所有之前的结果,直到找到请求的结果页,由于这种方法需要大量的内存,查询效率低下,ES不建议使用。

ES推荐的分页方法是基于搜索上下文(Scroll)的深度分页,它会在第一次检索时建立一个只客户端可见的索引上下文,并返回一个scroll_id(或上下文ID),在客户端不断使用scroll_id分页,直到得到需要的结果为止。

当用户请求第一页时,ES创建一个初始搜索上下文,并返回第一页的结果和scroll_id,客户端使用scroll_id获取下一页的结果,这个搜索上下文可以捕捉到所有未返回的搜索结果。

当用户请求下一页时,ES会给搜索上下文提供下一页的搜索结果并更新上下文,客户端通过scroll_id获取下一页的结果。

这种方法相对于深分页方法速度更快,因为查询只需要作用于新加入的文档。

总之,ES的深度分页原理是通过建立一个只数据库能确定的上下文来获取需要的数据,之后只需根据上下文ID循环获取,避免不必要的搜索,提高检索效率。

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

—94—一种基于Lucene 的中文全文检索系统苏潭英1,郭宪勇2,金 鑫3(1. 解放军信息工程大学电子技术学院,郑州 450004;2. 北京飞燕技术公司,北京 100072;3. 解放军通信指挥学院,武汉 430010)摘 要:在开源全文索引引擎Lucene 的基础上,设计了一个中文全文检索系统模型,该模型系统由7个模块组成,索引模块、检索模块是其中的核心部分。

论述了模型的整体结构,分析设计了索引及检索模块,通过具体的索引技术和检索技术来提高整个系统的检索效率。

该系统增加了加密模块,实现对建立的全文索引进行加密处理,增强了信息的安全性。

关键词:全文检索;Lucene ;倒排索引Chinese Full-text Retrieval System Based on LuceneSU Tan-ying 1, GUO Xian-yong 2, JIN Xin 3(1. Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004; 2. Technology Company of Beijing Feiyan,Beijing 100072; 3. Institute of PLA Communication Command, Wuhan 430010)【Abstract 】This paper proposes a model of Chinese full-text retrieval system based on Lucene which is an open source full-text retrieval engine,and expatiates its frame. This model is composed of seven modules, among which the index module and the search module are the core parts. It designs them concretely, and improves the search efficiency of the full-text retrieval system with index technology and search technology. The system model concludes an encryption module to encrypt the index and increases the system security. 【Key words 】full-text retrieval; Lucene; inverse index计 算 机 工 程Computer Engineering 第33卷 第23期Vol.33 No.23 2007年12月December 2007·软件技术与数据库· 文章编号:1000—3428(2007)23—0094—03文献标识码:A中图分类号:TP3911 中文全文检索系统全文检索技术是一个最普遍的信息查询应用,人们每天在网上使用Google 、百度等搜索引擎查找自己所需的信息,这些搜索引擎的核心技术之一就是全文检索。

随着文档处理电子化、无纸化的发展,图书馆、新闻出版、企业甚至个人的电子数据激增,如何建立数据库、管理好自己的数据,是亟待解决的问题,而全文检索是其中一个非常实用的功能。

全文检索产品实际上是一个内嵌该项技术的数据库产品[1]。

西文的全文检索已有许多成熟的理论与方法,其中,开放源代码的全文检索引擎Lucene 是Apache 软件基金会Jakarta 项目组的一个子项目,它的目的是为软件开发人员提供一个简单易用的工具包,方便在目标系统中实现全文检索的功能。

很多项目使用了Lucene 作为其后台的全文索引引擎,比较著名的有:(1)Jive :Web 论坛系统;(2)Cocoon :基于XML 的Web 发布框架,全文检索部分使用了Lucene ;(3)Eclipse :基于Java 的开放开发平台,帮助部分的全文索引使用了Lucene 。

Lucene 不支持中文,但可以通过扩充它的语言分析器实现对中文的检索。

本文在深入学习研究Lucene 的前提下,设计了一个中文的全文检索系统,对其核心的索引模块和检索模块进行了阐释,并添加了加密模块对索引信息加密,增强了系统的安全性。

2 系统的总体结构本模型总体上采用了Lucene 的架构。

Lucene 的体系结构如表1所示,它的源代码程序由7个模块组成。

表1 Lucene 的组成结构模块名功能 org.apache.Lucene.search 搜索入口 org.apache.Lucene.index 索引入口 org.apache.Lucene.analysis 语言分析器 org.apache.Lucene.queryParser 查询分析器 org.apache.Lucene.document 存储结构 org.apache.Lucene.store 底层IO/存储结构 org.apache.Lucene.util一些公用的数据结构本文通过扩充Lucene 系统来完成中文的全文检索系统,Lucene 包含了大量的抽象类、接口、文档类型等,需要根据具体应用来定义实现,本文对其作了如下扩充修改:(1)按照中文的词法结构来构建相应的语言分析器。

Lucene 的语言分析器提供了抽象的接口,因此,语言分析(analyser)是可以定制的。

Lucene 缺省提供了2个比较通用的分析器SimpleAnalyser 和StandardAnalyser ,但这2个分析器缺省都不支持中文,因此,要加入对中文语言的切分规则,需要对其进行修改。

(2)按照被索引的文件的格式对不同类型的文档进行解析,进而建立全文索引。

例如HTML 文件,通常需要把其中的内容分类加入索引,这就需要从org.apache.lucene.子document 中定义的类Document 继承,定义自己的HTMLDocument 类,然后将之交给org. apache.lucene.index 模块写入索引文件。

Lucene 没有规定数据源的格式,只提供作者简介:苏潭英(1981-),女,硕士研究生,主研方向:数据库全文检索;郭宪勇,高级工程师;金 鑫,硕士研究生 收稿日期:2007-01-10 E-mail :sutanyingwendy@了一个通用的结构(Document对象)来接受索引的输入,因此,输入的数据源可以是数据库,WORD文档、PDF文档、HTML 文档等,只要能够设计相应的解析转换器将数据源构造成Docuement对象,即可进行索引。

(3)设计具体的搜索查询。

Lucene提供了方便自建查询的API,通过QueryParser提供了强大的查询语言。

在实际应用中,要按Lucene查询语句解析器的语法设计具体的搜索器,其功能包括默认域的指定、搜索域的接收、索引库位置的接收、操作符的接收以及多个查询通过布尔操作符连接起来形成复杂的查询语句。

(4)设计检索结果的相关度。

这一部分设定文档与相关主题的准确程度,即文档符合查询要求的相似度,输出结果按此排序。

但Lucene对此不如扩充词法解析和文档类型那样条理清晰,没有留下很好的接口,因此,需要仔细地分析其源代码的实现,自行扩充。

经过扩充与设计,本文的中文全文检索引擎系统结构如图1所示。

图1 系统结构本系统中包含了语言分析模块、查询分析模块、检索结果排序模块、索引建立模块、检索模块、存储抽象模块等6个模块,它们是进行检索必备的部分。

另外,本系统充分考虑了信息的安全性,增加了一个加密模块,对所建立的全文索引进行加密。

3 系统中模块的分析与设计3.1 索引建立模块索引是全文检索的关键机制之一。

中文全文检索索引的建立比英文复杂得多,建立和维护全文检索索引库需要从以下3个方面考虑:(1)索引组织单元在西文中,文档的基本组成单元是单词,单词之间以空格间隔,而以单词为单位的索引实现起来比较简单,因此,西文的全文检索方面有许多比较成熟的理论,应用也很广泛。

中文全文检索技术在原理上同西文全文检索一致,但由于中文的词与词之间没有分隔符,因此其实现过程复杂得多。

在中文文档中,基本元素可以是单个汉字字符,也可以是词。

相应地,建立索引时就有2种基本的索引结构:基于字表的索引和基于词表的索引。

字表法把源文档中的每一个字的出现位置记录到索引库中,索引库对每个不同的字符都保存了一个字表,记录同一个字在文档中的所有出现位置。

词表法以能表达一定意义的词为基本独立单位建立索引库。

也有一些学者将2种方法结合,提出基于单元词的索引,但目前没有被广泛应用。

本文选用了字表法。

字表法对每个字的出现位置进行统计,并依据位置信息进行检索,不采用分词,实用性很强,查准率较高。

但单个汉字经常不具有独立的含义,因此,字表法在特定情况下会出现多检。

(2)索引组织方式无论是字索引还是词索引,全文检索的索引组织有正排表和倒排表2种方式[2]。

正排表是以文档的ID为关键字,表中记录项记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。

正排表结构如图2所示[3]。

图2 正排表的索引结构这种组织方法的结构比较简单,建立比较方便且易于维护,但是在查询时需要对所有文档进行扫描,以确保没有遗漏,这就大大延长了检索时间,降低了检索效率。

与大多数全文检索系统一样,本文的全文检索系统采用倒排表来组织索引。

倒排表以字或词为关键字进行索引,关键字对应的表项记录出现这个字或词的所有文档,每个表项记录着该文档的ID和所对应的关键字在该文档中出现的位置情况。

倒排表的组织结构如图3所示[3]。

图3 倒排表的索引结构因为每个字或词对应的文档数量是动态变化的,所以倒排表的建立和维护都较为复杂,但是在查询时可以一次得到查询关键字所对应的所有文档,因此效率高于正排表。

在全文检索中,检索的快速响应是最关键的性能之一,而索引的建立在后台进行,效率相对较低,不会影响整个搜索引擎的效率[3]。

(3)索引压缩在全文检索系统中,存储的数据信息是动态增加的。

由于索引记录了关键字每一次出现的位置信息,随着信息的不断增加,需要索引的内容会不断增加,索引量也将不断增大,如果不进行压缩处理,索引的大小会和原文档相当甚至是其的几倍,这必然会占用较多的存储空间[3]。

更重要的是,查询时需要读入的索引量也在增加,降低了查询速度。

相关文档
最新文档