2023年7月9日发(作者:)
基于搜索引擎的一站式检索平台设计与实现
杨伟超 刘阳 李淑霞
(信息工程大学测绘学院 河南 郑州 450052)
摘 要:
针对目前图书馆的各种电子资源都需要在各自的平台上单独检索的问题, 提出构建了基于搜索引擎的一站式检索平台,实现在统一的检索界面上, 一次检索就能获得所有电子资源的相关文献信息,使读者能在最短的时间内获得最深入、最准确、最全面的文献信息。
关键词:
搜索引擎;Sphinx;全文检索; 中文分词
中图分类号: TP311
文献标识码:
A
Design and Implementation of Unified search platform Based on search engine
YANG Wei-chao, LIU Yang ,LI Shu-xia
(Institute of Surveying and Mapping,Information Engineering University,Zhengzhou 450052,HeNan,China)
Abstract: In view of the problems such as libraries of all kinds of information resources on different platforms to retrieve,the paper
proposes building a unified search platform based search an unified search interface,a search of the literature will be able to
get all the information resources so that readers can get the most thorough, most accurate, most comprehensive literature information
in the shortest possible time.
Key words:Search engine ;Sphinx ;full-text search ;Chinese word segmentation
0引 言
图书馆电子资源越来越多,既有自建资源也有引进资源,尤其是引进资源,资源的类型、内容、结构、管理系统等存在很大差异,资源管理和检索使用极其不便,迫切需要建立一个整合图书馆各种资源的统一服务平台,实现对各种资源统一管理、统一检索。本案设计上充分借鉴了以往系统平台的开发和应用经验,吸取当前搜索引擎和资源整合中最前沿技术,最终实现了针对分布异构数字资源的整合检索系统。通过“一站式检索平台”,实现一次检索,即可搜索到图书馆的所有资源。解决了读者检索资源不方便的现状,提升资源获取效率,提高图书馆管理服务水平。平台设计中力图兼顾图书馆和读者两方面需求,尽可能保证平台有更好的稳定性,更快的检索速度,更强的兼容性。系统集成先进的搜索引擎技术,突破以往的基于数据库的简单检索模式,实现了章节和全文深度检索功能。
1
系统功能设计
本系统如图1有几个子系统组成:数据处理子
系统、索引子系统、搜索子系统、前端展示子系统、运维子系统组成。各功能子系统既相对独立,又相互联系。
数据处理子系统主要功能是异构数据库转换,元数据制作,页面权重计算等。各个不同数据厂商在提供数据中没有统一的标准,各种数据库平台都有,数据转换整合难度比较大。我们从以下三个方面进行整合。一是先转换成SQL Server库制作索引;二是对类似CNKI的大库开发专用的工具,直接制作索引。三是通过采集元数据间接制作索引。在进行上述处理后,再利用《分类表》、《主题词表》实现对信息资源的分类、标引和从信息资源库到统一检索平台的存储处理
索引子系统主要是在元数据制作完成后,对数据进行格式化,建立索引。索引库配置和管理如图2所示,主要是通过管理员进行的,管理员可通过索引库管理子系统进行索引的配置,创建,优化等操作。
图1 系统总体框架图
---------------------------------
收稿日期:2012-05-20
图2索引库管理图
作者简介:杨伟超(1980-),男,河南许昌人,信息工程大学测绘学院图书馆馆员,研究方向:检索技术,信息技术,数据库技术;刘阳(1958-),男,辽宁昌图人,信息工程大学测绘学院图书馆副研究馆员,研究方向:图书馆,情报技术。
搜索子系统、前端展示子系统、运维子系统,都是前台功能页面。主要是读者的检索服务页,读者可以在页面上对所有资源进行搜索,页面按事先划分的类目进行展示。读者也可以根据自己的需求进行高级检索。检索页的全局呈现效果也可以按照需要进行调整,包括站点标题、高级检索、关键字、登录情况、右侧相关、左侧聚类等都可以重新调整展示。
2
系统的部分关键技术
2.1 全文检索引擎Sphinx技术
系统的关键技术是开源的Sphinx[1-10]搜索引擎技术,系统的核心代码都是基于其开发而成的。
Sphinx是一个在GPLv2下的全文检索引擎,提供高速、低空间占用、高相关度结果的中文全文搜索。Sphinx可以非常容易的与SQL数据库和脚本语言集成。应用程序可以通过三种不同的接口方式来与Sphinx搜索服务通信:1) 通过原生的搜索
API (SphinxAPI), 2) 通过Sphinx自身支持的MySQL网络协议, 3) 通过MySQL 服务端的存储插件引擎(SphinxSE)。
Sphinx 的主要特性[11-13]: 索引和搜索性能优异;先进的索引和查询工具 (灵活且功能丰富的文本分析器,查询语言,以及多种不同的排序方式等等); 先进的结果集分析处理 (SELECT 可以使用表达式, WHERE, ORDER BY, GROUP BY 等对全文搜索结果集进行过滤);支持数十亿文档记录;易于集成SQL和XML数据源,并可使用SphinxAPI、SphinxQL或者SphinxSE搜索接口,易于通过分布式搜索进行扩展。
Sphinx是一整套独立的程序,主要有两个程序Indexer和searchd。Indexer是创建索引,系统会根据收割的元数据定期更新它。searchd查询Indexer创建的索引,系统运行时调用它。
2.2 索引建立、更新接口设计与实现
Sphinx设计中业务层不需要去关心索引的建立、更新等,只需后台定时维护主索引和增量索引即可。设计中为了防止建立索引时全表读取造成数据库瘫痪,进行分批读取。增量索引只读取一段时间内更新的数据。增量索引数量少,适合短时间内更新,主索引适合长时间内更新。读取索引的时候同时读取这2个索引。
(1).在Mysql中建立一个增量表,凡是数据更新操作(添加,修改,删除),都会将相关ID更新到到增量表;表结构很简单,只记录ID。
(2).修改Sphinx的配置文件
sql_query = SELECT
id, name, price*100 AS price, 0 AS
in_update FROM shop_product
sql_attr_uint = in_update
增加了一个字段in_update,用来标记主索引的这条记录,是否在增量表中。
(3)数据的更新操作时,除了更新增量表,同时也利用Sphinx API的UpdateAttributes方法,将主索引中的相关记录的in_update属性设置成”1″更新完了属性后,发出增量索引更新通知,可以是写队列,写文件等方式。
(4).在查询时,增加过滤器
$Sphinx->SetFilter( ’in_update’, array(0) )。
这样,就不会使用到主索引中的处于增量索引中的doc,以免搜索到错误的编辑前的数据。
(5).守护进程接到增量索引更新通知,重建增量索引。
(6).每周日晚上更新主索引,清空增量表,清空增量索引。
后台操作时,简单的用写文件的方式通知索引更新脚本,索引更新完成后,将文件重置。
2.3 查询接口设计与实现
读者搜索时,实际上查询的是用中文分词分割的文件进行,因此分词的好坏直接关系到搜索的优劣。中文分词[14]有三类,第一种是基于字符串匹配的分词方法,按照一定的策略与词典进行匹配。第二种是基于语义理解的分词方法,目前还处于试验阶段。第三种是基于统计学分析的分词,就是根据词组的统计,判断相邻字出现的频率,根据频率判断其重要性。从而作为划分的依据。
本系统从实现的成本和效率的角度考虑,使用的中文分词 是用搜狗拼音输入法细胞词库和
LibMMSeg高频字库综合处理而成。
具体实现:
(1)生成Sphinx中文分词词库
(2)构造词典
(3)创建Sphinx主索引文件、增量索引文件存放目录。
(4)创建Sphinx配置文件
(5)初始化中配置的全部索引
/usr/local/sphinx/bin/indexer –all。
我们按照图书、期刊、论文、地图、音像等对所有元数据重新归类。读者可以在这个页面上对所有资源进行搜索,页面按图3所示的类目进行展示。
图3搜索页面示意图
3实验结果分析
在一台戴尔PowerEdge T410服务器上部署测试“一站式检索平台”,通过提取中文数据库的元数据制作索引,数据量1亿多条的情况下,查询速度 秒,明显优于传统索引结构。并发连接超过一百时,速度稍微下降,经测试是内存有点小。建议如果并发数比较大时,内存不能低于8G。经过一段时间的试运行,系统的稳定性和实用性都比较强。搜索速度很快,节约了读者查找资料的时间。
结束语
[3]李刚,宋伟,邱哲.征服Ajax+Lucene构建搜索引擎[M].北京:人民邮电出版社, 2006.
[4]吴翔.基于Lucene的音乐资讯垂直搜索引擎的设计和实现[D].北京: 北京交通大学,2009.
[5]张书江.基于Java的垂直搜索引擎的设计与实现.安徽:安徽理工大学[D].2009.
[6]苏亮.基于多级Hash分词的全文搜索引擎的研究. 北京:北京邮电大学[D].2008.
[7]李靖.基于Lucene的在线客服机器人的研究与实现.四川:西南交通大学硕士论文.2009.
[8] 刘敏娜,葛萌,陈娟. 基于Lucene的全文搜索引擎设计与实现[J]. 福建电脑. 2009(05):71-73.
[9]潘以锋. 基于Lucene的网站全文检索系统的开发[J].
本案设计实现的基于搜索引擎的“一站式检索平台”突破以往的数据库的检索模式,集成了sphinx搜索引擎技术,建立专用的索引结构,使亿万级的数据秒级响应。目前该系统已投入使用,节省读者获取文献信息资源的时间,提高了查检信息资源的效率,受到广大读者的肯定和赞赏,并为同类数据整合服务提供了有益的借鉴。
参考文献
[1]曹强. 基于Lucene的Web站点站内全文检索系统的设计与实现[J]. 图书情报工作.2007(09):35-36.
[2]周锦程,王丹. 基于Lucene的全文搜索引擎研究与应用[J]. 黔南民族师范学院学报.2009(03):145-148.
---------------------------------
广西教育学院学报. 2006(05):15-18.
10]李敏,黄凯. 一个多线程全文检索系统的构建[J]. 长江大学学报(自然科学版)理工卷. 2010(03):37-39.
11] 周平. Lucene全文检索引擎技术及应用[J]. 重庆工学院学报(自然科学版). 2007(04):21-23.
12]张琳,陶振凯. 基于Lucene的全文检索系统的改进方法[J]. 沈阳理工大学学报. 2008(04):65-68.
13]曾湛伟. 基于Sphinx的特色数据库全文检索系统的设计与实现[J]. 现代图书情报技术.
2010(06) :45-48.
14]刘清明,彭宇扬,彭自成. 基于Sphinx的Web站内搜索引擎的设计与实现[J]. 微计算机信息.
2010(15) :16-19.
[[[[[
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688890562a181651.html
评论列表(0条)