基于Lucene的企业搜索引擎研究及应用

合集下载

《基于Lucene的蒙古文搜索引擎的设计与实现》范文

《基于Lucene的蒙古文搜索引擎的设计与实现》范文

《基于Lucene的蒙古文搜索引擎的设计与实现》篇一一、引言随着信息技术的飞速发展,搜索引擎已经成为人们获取信息的重要工具。

蒙古文搜索引擎作为服务于蒙古语用户的信息检索工具,其设计与实现显得尤为重要。

本文将介绍基于Lucene的蒙古文搜索引擎的设计与实现过程,旨在为相关研究和应用提供参考。

二、需求分析1. 用户需求:蒙古文搜索引擎需满足用户快速、准确地搜索蒙古文信息的需求。

同时,用户期望搜索引擎具有友好的界面和良好的用户体验。

2. 功能需求:蒙古文搜索引擎应具备基本的搜索功能,如全文搜索、关键词搜索、高级搜索等。

此外,还需支持对搜索结果的排序、筛选和分享等功能。

三、系统设计1. 技术选型:选用Lucene作为搜索引擎的核心技术,其强大的全文搜索功能和高效的索引管理机制能够满足蒙古文搜索引擎的需求。

2. 系统架构:采用分层架构设计,将系统分为数据层、索引层、搜索层和用户层。

数据层负责存储蒙古文数据,索引层负责建立和管理索引,搜索层负责提供搜索服务,用户层负责与用户进行交互。

3. 数据库设计:选用适合蒙古文的数据库管理系统,建立数据表结构,用于存储蒙古文文档、关键词、索引等信息。

4. 索引策略:采用倒排索引技术,对蒙古文文档进行分词、过滤和建立索引,以提高搜索效率和准确性。

四、系统实现1. 数据预处理:对蒙古文文档进行分词、去停用词等预处理操作,以便建立准确的索引。

2. 索引建立:使用Lucene的API建立倒排索引,将预处理后的文档数据存储到索引中。

3. 搜索服务:提供基本的搜索功能,如全文搜索、关键词搜索、高级搜索等。

同时,支持对搜索结果的排序、筛选和分享等功能。

4. 用户界面:设计友好的用户界面,提供简洁明了的操作方式和良好的用户体验。

五、性能优化1. 索引优化:定期更新索引,删除无效的索引项,以提高搜索速度和准确性。

同时,采用多线程技术加速索引建立过程。

2. 查询优化:针对不同的查询需求,采用不同的查询策略和算法,以提高搜索效率和准确性。

基于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%”……其效率也就可想而知了。

C#编写了一个基于Lucene.Net的搜索引擎查询通用工具类:SearchEngineUtil

C#编写了一个基于Lucene.Net的搜索引擎查询通用工具类:SearchEngineUtil

C#编写了⼀个基于的搜索引擎查询通⽤⼯具类:SearchEngineUtil 最近由于⼯作原因,⼀直忙于公司的各种项⽬(⼤部份都是基于spring cloud的微服务项⽬),故有⼀段时间没有与⼤家分享总结最近的技术研究成果的,其实最近我⼀直在不断的深⼊研究学习Spring、Spring Boot、Spring Cloud的各种框架原理,同时也随时关注着.NET CORE的发展情况及最新技术点,也在极客时间上订阅相关的专栏,只要下班有空我都会去认真阅读观看,纸质书箱也买了⼀些,总之近⼀年都是在通过:微信技术公众号(.NET、JAVA、算法、前端等技术⽅向)、极客时间、技术书箱不断的吸取、借鉴他⼈之精华,从⽽不断的充实提⾼⾃⼰的技术⽔平,所谓:学如逆⽔⾏⾈,不进则退,⼯作中学习,学习后⼯作中运⽤,当然写⽂章分享是⼀种总结,同时也是“温故⽽知新”的最佳应⽤。

using .Analysis.PanGu;using .Documents;using .Index;using .QueryParsers;using .Search;using .Store;using NLog;using PanGu;using PanGu.HighLight;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Text;namespace mon{/// <summary>/// Lucene 搜索引擎实⽤⼯具类/// Author:zuowenjun/// </summary>public class SearchEngineUtil{/// <summary>/// 创建并添加索引记录/// </summary>/// <typeparam name="TIndex"></typeparam>/// <param name="indexDir"></param>/// <param name="indexData"></param>/// <param name="setDocFiledsAction"></param>public static void AddIndex<TIndex>(string indexDir, TIndex indexData, Action<Document, TIndex> setDocFiledsAction){//创建索引⽬录if (!System.IO.Directory.Exists(indexDir)){System.IO.Directory.CreateDirectory(indexDir);}FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexDir), new NativeFSLockFactory());bool isUpdate = IndexReader.IndexExists(directory);if (isUpdate){//如果索引⽬录被锁定(⽐如索引过程中程序异常退出),则⾸先解锁if (IndexWriter.IsLocked(directory)){IndexWriter.Unlock(directory);}}using (IndexWriter writer = new IndexWriter(directory, new PanGuAnalyzer(), !isUpdate, IndexWriter.MaxFieldLength.UNLIMITED)){Document document = new Document();setDocFiledsAction(document, indexData);writer.AddDocument(document);writer.Optimize();//优化索引}}/// <summary>/// 删除索引记录/// </summary>/// <param name="indexDir"></param>/// <param name="keyFiledName"></param>/// <param name="keyFileValue"></param>public static void DeleteIndex(string indexDir, string keyFiledName, object keyFileValue){FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexDir), new NativeFSLockFactory());if (!IndexReader.IndexExists(directory)){return;}using (IndexWriter iw = new IndexWriter(directory, new PanGuAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED)){iw.DeleteDocuments(new Term(keyFiledName, keyFileValue.ToString()));iw.Optimize();//删除⽂件后并⾮从磁盘中移除,⽽是⽣成⼀个.del的⽂件,需要调⽤Optimize⽅法来清除。

基于Lucene的搜索引擎系统的开发与应用

基于Lucene的搜索引擎系统的开发与应用
v l p n fs a c n i e a d p e e t t rn i l. On t i a i o h s o bn d wi r c ia a p ia in o n e p ie eo me to e r h e gn n r s n s isp i c pe h s b ss ft i ,c m i e t p a t l p l t fe tr rs . h c c o we p o o e t ed v l p n r c s fs a c n i e r p s h e eo me tp o e so e r h e g n .
各 网页 中爬 行 , 问 网络 中公开 区域 的每 一个 站 点 访

2一2 回期 0。 , 日 14 修 。 o_

2搜 引 应 实 索 擎 用 践
目前 。 多企业 级 检索 应 用 大都是 在开 源搜 索 很
川 一 ~ 一 ~ … ’ ’ ¨ … 一 … … …

Ab t a t s r c :W i h e eo me t fn t r fr t n,sa c n iepa sa mp ra tr l.Thsp p rd s r e h e t t ed v lp n ewok i o ma i h o n o e rhe gn ly ni o tn oe i a e ec i st ed — b
Ap l a i n a d d v l p n n l c n a e e r h e g n p i to n e e o me to u e e b s d s a c n i e c
Z E G n p n H N Ya — i g ,GE a Ch o
( .S  ̄a h a g P ssa d Tee o 1 h iz u n o t n lc mmu iain c nc l l g nc t sTe h ia l e.S ia h a g He e 5 0 1 o Co e hj z u n b i 0 2 ,Chn ; .B in o tIfr i 0 ia 2 ej g P s no — i main Te h oo yBue u.B in 0 0 5.Chn ) t c n lg ra o ej g 1 0 5 i ia

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

基于Lucene和Heritrix的全文检索引擎的研究与应用
usngi. i t Thes ac ngm e ha s sofLu e e ea l i nd t a e o ksofH e ti w e ed s u sd n t spa r And fn ly, ede e r hi c nim c new r nayssa hef m w r r i r rx r ic se i hi pe . al w - i veo d a a pl ai n o m a e p su y o r ai et ult x e r h ngbae n l pe n p i to t kea d e t d t e z hef l e ts ac i s d o Luc ne c l e .
QI i — u NG X u— a h
( h o o Eet nc S o l f ete iesy W u a 3 0 3 C ia c r l r aE g e n , hnT xi v rt, hn4 07 , hn) c i n i lUn i
Ke o d : ue efltx a hn g e He tx yw r s L cn ;u ter ig n n ; rr le s c ei ii
1 述 概
随着 It t ne 网上 的信息呈几何级数 式的增长 , me 搜索引擎 已经 成为用户浏览 网络信 息的首选 。传统 的通用搜索引擎 (og 、 G ol e Y ho以及国内的 B iu等)作为一个辅助用户查找信息 的工具已经成为大多数互联网用户访问 网络的入 口。但是 , ao a d , 这些通用性搜 索引擎存在着一定的不足 , 例如 : 用搜索 引擎 的信息量较大 、 通 搜索深度不够 、 询不太准确等 问题 。在这种情况下 , 了解决这些 查 为 问题 , 垂直搜索引擎 应运 而生 。垂直搜索引擎是针对某一领域或行业 的专业搜索引擎 , 是搜索 引擎 的延伸 , 以为搜索用户提供符 可 合专业 用户操作 行为的信息服务方式 。它 的特点是 “ 、 、 , 专 精 深” 并且具有较强 的行业色彩 , 和通用搜索引擎的海量信息无序化相 比, 垂直搜索 引擎更加具体 和深入 。该 文主要 阐述开源 的L cn 技术 和 H rr u ee eii tx技术的基本原理和使用方法 , 出了整合 L cn 提 u ee 与 Heii使其与 JE rr tx 2 E平 台完全融合的方案 , 并实现了一个手机产品垂直搜索引擎系统。

lucene简介原理及实践(共48张)

lucene简介原理及实践(共48张)
第17页,共48页。
Analyzer
在一个文档被索引之前,首先需要对文档内容进行分词处理, 并且而剔除一些冗余的词句(例如:a,the,they等),这部分工作
就是由 Analyzer 来做的。
Analyzer 类是一个抽象类,它有多个实现。
BrazilianAnalyzer, ChineseAnalyzer, CJKAnalyzer, CzechAnalyzer, DutchAnalyzer, FrenchAnalyzer, GermanAnalyzer, GreekAnalyzer, KeywordAnalyzer, PatternAnalyzer, PerFieldAnalyzerWrapper, RussianAnalyzer, SimpleAnalyzer, SnowballAnalyzer, StandardAnalyzer, StopAnalyzer, ThaiAnalyzer, WhitespaceAnalyzer
通过实现特定API,完成文档建立索引的工 作
第7页,共48页。
Lucene搜索机制-B 基于(jīyú)索引搜索
Lucene通过特定的类,可以对索引进行操 作
通过特定的类,封装搜索结果,供应用程 序处理
第8页,共48页。
Lucene系统结构
第9页,共48页。
Lucene包结构(jiégòu)功能表
第19页,共48页。
Field
Field 对象(duìxiàng)是用来描述一个文档的某个属性的,比如一封电子邮件的标 题和内容可以用两个 Field 对象分别描述。
Field(String name, byte[] value, Field.Store store) Create a stored field with binary value.

es的lucene作用

es的lucene作用Es的Lucene作用Lucene是一个开源的全文搜索引擎库,被广泛应用于各种编程语言和领域,其中包括Elasticsearch(简称Es),是一个基于Lucene 构建的分布式搜索与分析引擎。

本文将重点介绍Es的Lucene作用,并探讨其在搜索引擎领域中的重要性。

一、Lucene的基本概念和原理Lucene是一个高效、可扩展的全文搜索引擎库,它提供了一套简单而强大的API,可以用于创建索引、搜索和生成文本摘要。

其核心原理是将文本数据分析、索引和搜索的过程进行分离,以实现高效的全文搜索。

1. 数据分析(Analysis):Lucene提供了一系列的文本分析器(Analyzer),用于将输入的文本进行分词、词干提取、大小写转换等处理。

分析器的作用是将原始文本转化为一组有意义的词条(Term),以便于后续的索引和搜索操作。

2. 索引(Indexing):Lucene使用倒排索引(Inverted Index)的方式来存储和管理文本数据。

倒排索引是一种将词条映射到文档的数据结构,它可以快速地根据词条进行搜索,并找到包含该词条的文档。

3. 搜索(Searching):Lucene提供了丰富的搜索API,可以根据关键词、短语、通配符等进行检索,并按照相关度对搜索结果进行排序。

搜索过程利用倒排索引来定位匹配的文档,并根据各种算法计算文档与查询的相关度。

二、Es中的Lucene应用Es是一个基于Lucene的分布式搜索与分析引擎,它在Lucene的基础上进行了功能扩展和性能优化,提供了更强大的分布式搜索和数据分析能力。

1. 分布式搜索:Es将数据分片存储在多个节点上,并使用分布式索引的方式来实现高性能的搜索。

当用户发起搜索请求时,Es会将查询分发到各个节点,并将结果进行合并和排序,最后返回给用户。

2. 数据分析与聚合:Es提供了丰富的数据聚合功能,可以对文档进行分组、统计、排序等操作。

用户可以通过聚合操作获取关于数据的各种统计信息,如平均值、最大值、最小值等,以及根据条件进行数据筛选和分析。

基于Lucene全文检索引擎的研究与实现

同 类 型的 文 档 进 行 解 析 。 比如 对 于 HT ML 文 l 并 利 用 方 法 1 回 的结 果 得 到分 词 的 结 , 返 档, HTML 析 器 会 做 一 些 预 处 理 的 工 作 。 果 和 词 频 结 果 。 解 当从 文 本读 入 一 个 字 , 使
接 o ti( 来 s Ma 中是否 存在 这 巨大 反 响 , 序 员不 仅 使 用 它 构 建 具 体 的 HTM L解 析 器 输 出 的 是 文 本 内 容 , 着 用cnan) 判断Hah p 程 全 文 检 索 应 用 , 且 将 之 集 成 到 各 种 系 统 L c n 的分 词 器从 文 本 内 容 中 提 取 出素 引 而 ue e 个 字 的 映射 , 果 存 在 就 取得 长 度 等 于字 如
石 头一贾府 ” 行 分 析 , 进 先分 析 器 解 析 字符 串
2全文检索引擎Lcn u e e
2 1 uee . Lcn简介
L cn 是a a h 软件基金  ̄jk ra 目 u ee p c e a at 项 组 的 一 个 子项 目 , 一 个 开 放 源 代 码 的 全 是
检 索 索 引库 的 T e p中找 到 对 应 如 e Ma
首 先 , 入 查 询 条 件 , 如 用 户 希 望 查 的 映 射 则对 应 的 键 值 加 l 输 出 的时 候 在 输 比 ,
的 基 础 上 , 且 针 对L c n 中文 分 词 的 弱 询 到 含 有 词 “ 宝 玉 ? “ 头 但 不 含 “ 并 u ee 贾 和 石 贾 词 后 面 加 上 分 割 符 号 ‘ , 后 继 续 重 复 \’ 然 势 扩 展 设 计 了 一 个 相 对 完 善 的 中 文 分 词 府 ” 记 录 , 么 输 入 条 件 为 “ 宝 玉 +石 前 面 的 步 骤 , 到 文 件 结 束 , 出 ; 果 的 那 贾 直 退 如 器 , 实 现 了一 个 基 于 L c n 全文 检 索 技 头 一贾 府 ” 查 询 条 件 传 入 搜 索 器 (u e e 并 uee l 1cn . 读者 了解 和 使用 L c n 全 文 检索 引擎 提 供 ue e

基于Lucene的个性化站内搜索引擎的研究


WagZ ay L i i n h ou eJ j an
(colfCm u r c nead Tcnl y og u n e i S a g a 2 12 ,hn Sho o p  ̄ i c n eh o g ,D n h aU w n ̄, h n h i 0 6 0 C i o Se o a)
Ke wo d y rs W e s e s a c I d sr l a k ru d P r o aiai n I tr s rd c in L c n b i e rh t n u t a c g o n es n z t n ee t e it u e e i b l o p o
s o t a e meh d,rg r i gu e e r h s f r r t h d g e n r cs n t a e e a ac n i e , o n t n e h w tt t o h h e a dn s rs a c e ,of s mo e mac e r e a d p e ii n g n r s r h e g s fr isa c ,Go g e o h l e n o k.
第2 8卷 第 1 2期
21 0 1年 l 2月
计算机 应 用与软件
Co u e p ia in n o t r mp t rAp l t s a d S f c o wa e
V 12 . 2 0 . 8 No 1
De c.2 1 01
基 于 L cn u ee的个 性 化 站 内搜 索 引擎 的研 究
对于用户 的搜 索提供 了比通用搜索引擎( G ol 为例 ) 有更高的匹配度和查准 率。 以 oge 具 关键词 中图分类号 站 内搜 索 行业背景 个性化 兴趣预测 T 3 14 P 0 . 文献标识码 A L cn uee

基于Lucene专业搜索引擎的研究应用

定 的组 织 返 回给 用 户 。 外 。 网 络 机 器人 爬 行 之 前 , 此 在 需
领域或 主题的信息 , 由搜索器 、 索引器 、 检索 器和用 户 接 口等 四个部分组成 ,工作原理与通用搜索 引擎 的工
作 原 理基 本 相 同 .所 不 同 的 是 专 业 搜 索 引擎 对 抓 取 的
收 稿 E 期 :0 0 8 2 l 2 1 —0 —1 修 稿 日期 :0 0 0 —1 21—9 2
作 者 简介 : 雪 - ( 7 - , , 苏如 皋 人 , 师 , 士 , 究 方 向 为 信 息 处理 与检 索 朱  ̄ 1 6) 江 9 女 讲 硕 研
0 现 计算 21. 代 机 00 9 0

\ \
实 践 与 经验
基于 L c n u e e专业搜 索引擎 的研 究应 用
朱 雪莲
( 疆 艺 术 学 院 基 础部 ( 政 部 ) 新 思 ,乌 鲁 木 齐 8 04 ) 30 9

要 :搜 索 引 擎现 已 经成 为 搜 索互 联 网信 息 的重 要 工 具 。通 用 的搜 索 引 擎 虽然 功 能 强 大, 对 专 但
应 用
L cn 是 用 -v 的 全 文 检 索 引 擎 工 具 包 , 不 ue e l a写 a 并 是 一 个 完 整 的全 文 检 索 引 擎 ,而 是 一 个 全 文 检 索 引 擎
擎所建立 的数据 库是关于某一领域 或某一专 业 。图 1 显示了专业搜索 引擎 的体系结构 。
擎在 搜 索结 果 等 方 面 进行 比 较
关 键 词 : e :专 业搜 索 引 擎 ; ue e w b L cn
0 引


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

Computer Knowledge and Technology电脑知识与技术第5卷第4期(2009年2月)基于Lucene的企业搜索引擎研究及应用李海丰(中南林业科技大学计算机科学学院,湖南长沙410004)摘要:分析了企业级搜索引擎应具有的功能和总体架构,研究了Lucene的系统结构及检索原理,提出了统一处理html、pdf、word等多种常用文档的思路。

针对中文特点设计搜索引擎的构建技术,包括从源数据采集、文档解析与分词、索引器、信息检索、结果排序的全过程,基于Lucene软件包实现了一个原型系统,取得了较好的搜索效果。

关键词:Lucene;企业搜索引擎;中文分词;非结构化文档中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)04-0926-04Research and Application of Enterprise Search Engine Based on LuceneLI Hai-feng(Colleage of Computer Science of Central South University of Forestry and Technology,Changsha410004,China)Abstract:The structure and function of the enterprise search engine has been analyzed,introduces the structure and the index principles of Lucene,put forward the method of the deal with html,pdf,word documents.Design of search engine technology based on characteristics of the Chinese,include the process of Collection of source data,Document Analysis and Segmentation,Indexer,information search,result sort-ing.Realize a prototype system based on Lucene,and achieved a good search results.Key words:lucene;enterprise search engine;chinese word segmentation;unstructured documents1引言伴随着互联网的兴起,企业信息化建设也迅速发展起来。

面对浩瀚的企业内部数据和网络数据,如何更有效、快速的获取成为一个非常重要的问题,企业搜索引擎很好的解决了这个问题。

网络信息数据分为两类:一类信息能够用数据或统一的结构加以表示,称之为结构化数据,如数字、符号等;另一类信息无法用数字或统一的结构表示,如word文档、PPT演示文档、PDF文件乃至网页等,这些非结构化信息都位于传统数据库之外。

随着企业信息化水平的提高,企业内部和网络上的大部分数据为非结构化信息。

现有的数据库检索,是以结构化数据为检索的主要目标,实现相对简单,但对于非结构化数据,由于复杂的数据事务操作以及低效的高层接口,导致检索效率低下。

Lucene[1]这个开源项目的推出及发展,为开发者提供了一个优秀的信息检索引擎。

2Lucene技术简介Lucene作为一个优秀的全文检索引擎,它的系统结构[2]具有强烈的面向对象特征。

首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎系统。

2.1Lucene的系统结构Lucene的系统由基础结构封装、索引核心、对外接口三大部分组成。

其中直接操作索引文件的索引核心又是系统的重点,如图1所示。

Lucene每个包完成的特定功能,如表1所示。

2.2Lucene的特点Lucene作为一个全文检索引擎,其具有如下突出的优点:1)索引文件格式独立于应用平台。

Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。

2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。

然后通过与原有索引的合并,达到优化的目的。

收稿日期:2008-11-21图1Lucene组织结构图表1Lucene包结构功能表ISSN1009-3044Computer Knowledge and Technology电脑知识与技术Vol.5,No.4,February2009,pp.926-929E-mail:eduf@ Tel:+86-551-569096356909643)优秀的面向对象的系统架构,使得对于Lucene 扩展的学习难度降低,方便扩充新功能。

4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token 流完成索引文件的创立,每个域有是否索引、是否存储、是否分词3个参数,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即可使系统获得强大的查询能力,如短语查询、模糊查询、前缀匹配、区间查询、条件过滤、逻辑运算符等。

3系统概述3.1设计目标企业搜索要求不同于网络搜索,对引擎有如下的一些特别要求:1)提供对多数据源的支持(DB 、Web 、Mail 、Office 等);2)提供对多种文件格式的支持(文本、邮件、网页、办公文档等);3)提供对文件的权限控制,即搜索的结果需要根据请求用户权限的不同而变化;4)需要提供多种检索方式的支持;此外还有信息推送、信息分类聚类等其他要求。

3.2系统框架企业级搜索引擎[3]依靠企业的硬件平台和网络环境,针对企业的非结构化文档信息以及异构的结构化数据库,提供整体检索服务方案。

主要内容包括异构文档解析、异构数据库解析、信息分类系统、文档索引系统、信息检索系统、系统管理控制、安全控制等各种内容。

整个系统数据流程从原始数据开始,经过格式化分析和处理,得到统一的中间纯文本形式。

通过信息分类建立不同信息的属性,在安全管理和系统管理的配合下,完成文档索引功能。

系统用户通过信息检索系统搜索系统数据。

系统功能流程如图2所示。

4系统模块和设计4.1源数据采集企业搜索引擎指对企业文档资源和数据库资源进行索引和检索的一类搜索机制。

企业搜索引擎对用户提交的查询匹配串找到相应的文档链接,搜集企业文档的目录列表以及向用户提供信息查询服务。

企业搜索引擎的信息采集不仅需要对企业外部的站点进行采集,还需要对企业内部的站点进行采集。

企业内部的网站数量往往不会很多,而且网址(或IP 地址)相对固定,因此可以将这些站点全部加到搜索引擎的内部网络站点集中。

如建设了新站点,用户只要把网址添加到内部网络站点集中即可。

对内网站点信息的采集,网络蜘蛛爬行的范围仅限于内部网络,而将那些内部网络站点的页面中指向外部网站的链接添加到外网种子站点集中。

为了确保对外部网站信息检索的质量,对外网信息采集的种子站点需要精心选择。

外网种子站点集包含两个层次:种子站点集和候选种子站点集。

种子站点集由如下两个途径产生:1)用户推荐的行业或领域内的权威站点;2)企业内部网站中链接到的外部网站。

这些网站是企业用户经常访问的站点,其中往往包含有对企业用户有用的信息。

候选种子站点集也由两个途径产生:1)用企业关键词集的关键词,利用多个通用搜索引擎检索,获得的排名靠前的若干站点;2)在企业搜索引擎的一个更新周期内,企业用户在检索时命中率和点击率较高的若干站点。

种子站点集是相对固定不变的,而候选种子站点集在每一次更新搜索引擎数据库时要重新计算。

增加候选种子站点集的做法有助于发现尚未为用户所知的权威站点以及行业内新出现的一些站点。

种子站点和候选种子站点的数量可根据企业具体情况设定,一般十几个到几十个为宜。

企业关键词由企业各部门推荐,经企业专家认定,并根据行业及企业的发展进行动态调整。

4.2文档解析与中文分词汉语的书写以汉字作为基本单位,词与词之间没有明显的形态界限,要进行汉语的计算机处理,必须首先将汉语的词与词分割开,即分词[4]。

通常认为中文分词主要有以下3种形式:4.2.1基于词典匹配的分词方法基于词典的分词方法的三个要素为分词词典、文本扫描顺序和匹配原则。

分词词典包括常规词典和专业词典。

文本的扫描顺序有正向扫描、逆向扫描和双向扫描。

正向扫描是指从待切分字符串的第一个字符往后扫描,而逆向扫描是指从待切分字符串的最后一个字符往前扫描。

双向扫描则是正向扫描和逆向扫描的组合。

匹配原则主要有最大匹配、最小匹配、逐词匹配和最佳匹配等。

常见的基于词典的分词方法有正向最大匹配法、逆向最大匹配发、双向扫描法、逐词遍历法、最佳匹配法等。

4.2.2基于统计的分词方法基于统计的分词方法的基本思想是:从形式上看,词是稳定的字的组合,因此在文档中,相邻的字按顺序同时出现的次数越多,就越有可能构成一个词。

因此字与字相邻共现的频率或概率能够较好的反映它们成为词的可信度。

所以基于统计的分词法的基本原理就是:对语料库中相邻的字的组合的频度进行统计,根据一定的频度计算公式来决定字符串成为词的可能性来分词。

字词共现的频度高低体现了汉字之间结合关系的紧密程度。

当紧密程度高于某一个阈值时,便可认为此字符串可能已经构成了一个词。

基于统计的分词方法所应用的主要的统计量或统计模型有:互信息、N 元文法模型、神经网络模型、隐Markov 模型等。

4.2.3基于理解的分词方法基于语义理解的分词方法是模拟人脑对语言和句子的理解,达到识别词汇单元的效果。

基本模式是把分词、句法、语义分析并行进行,利用句法和语义信息来处理分词的歧义。

由于Lucene 只支持txt 等纯文本格式的索引,对于html 、pdf 、word 和Excel等异构文档数据我们需要进行文档解析过滤后才能图2系统功能流程图Computer Knowledge and Technology 电脑知识与技术第5卷第4期(2009年2月)进行索引,我们利用各种相关工具对异构文档进行文本提取,将解析出来的文本利用中文分词工具ICTCLAS[5]进行分词。

下一步就是停用词的处理,以节省存储空间和提高搜索效率,然后传递给Lucene 的索引器建立索引。

4.3索引结构分析与建立在Lucene 的文件格式中,以字节为基础,定义了数据类型,由于它们都以字节为基础定义而来,因此保证了与平台无关,这也是Lucene 索引文件格式平台无关的主要原因。

相关文档
最新文档