城轨线网非结构化数据全文检索软件设计_第1页
城轨线网非结构化数据全文检索软件设计_第2页
城轨线网非结构化数据全文检索软件设计_第3页
城轨线网非结构化数据全文检索软件设计_第4页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 城轨线网非结构化数据全文检索系统设计文档作者:刘建委、周桔红、唐忠诚小组审查:刘琼2014-06-04目录 TOC o 1-3 h z u HYPERLINK l _Toc389657270 1 概述 PAGEREF _Toc389657270 h 3 HYPERLINK l _Toc389657271 2 系统概要设计 PAGEREF _Toc389657271 h 3 HYPERLINK l _Toc389657272 2.1系统结构 PAGEREF _Toc389657272 h 3 HYPERLINK l _Toc389657273 3系统详细设计 PAGEREF _Toc38965

2、7273 h 4 HYPERLINK l _Toc389657274 3.1系统实现 PAGEREF _Toc389657274 h 4 HYPERLINK l _Toc389657275 3.2检索模块的实现 PAGEREF _Toc389657275 h 4 HYPERLINK l _Toc389657276 3.3 Web模块 PAGEREF _Toc389657276 h 7 HYPERLINK l _Toc389657277 3.4 web模块和检索模块的接口 PAGEREF _Toc389657277 h 8 HYPERLINK l _Toc389657278 4系统主要代码文件

3、PAGEREF _Toc389657278 h 8 HYPERLINK l _Toc389657279 附录:API说明 PAGEREF _Toc389657279 h 9 HYPERLINK l _Toc389657280 1 _init_.py类MainSource中核心函数 PAGEREF _Toc389657280 h 9 HYPERLINK l _Toc389657281 2 _init_.py中 DistSource 类中的核心函数 PAGEREF _Toc389657281 h 10 HYPERLINK l _Toc389657282 3 shpinxapi.py文件中Shinx

4、Client类的核心函数 PAGEREF _Toc389657282 h 11 HYPERLINK l _Toc389657283 4 Search.py文件中的核心函数 PAGEREF _Toc389657283 h 12 HYPERLINK l _Toc389657284 5 flaskr.py中的核心函数 PAGEREF _Toc389657284 h 121 概述轨道交通公司越来越重视非结构化数据的检索和利用,要求设计一套能够快捷、有效的利用非结构化数据的系统,能够实现对日常运营产生的一些文本文档等能够实现快速检索。该全文检索系统后端采用coreseek做引擎、利用mmseg算法对中文

5、文档进行分词,通过主索引+增量索引的方式保证结果的实时性,前端采用flask框架,构建了一个信息检索网站,用于用户交互和结果展示。2 系统概要设计2.1系统结构全文检索系统主要设计两个主体部分:检索模块Web模块Web模块将用户的查询请求转发给检索模块,检索模块在已经建立好的索引上进行查询,并将相应的查询结果通过接口返回给web。图1 全文检索系统结构图3系统详细设计3.1系统实现全文检索系统包括一个配置文件、两个功能模块以及一些脚本文件。配置文件包含环境变量的设置,数据源的配置,主、备索引的设置,中文分词的配置,检索进程的设置等。检索模块:索引进程首次运行时,自动读取和解析配置文件,将主索引

6、设置中的源文件读进内存,用中分分词算法进行分割,并保存成倒排文件。通过脚本周期的进行增量索引,将这一时间段新增的数据进行索引。每天在固定的系统空闲时间,进行主、增量索引的合并,并对增量索引进行清空。检索时,对主索引和增量索引同时进行,并将查询结果进行相关性排序后返回给web。Web模块:对用户进行安全性验证,通过后,将用户的查询请求通过接口转发给检索进程,并将返回的结果抽取部分信息用链接的形式显示在页面上,用户选择感兴趣的进行查看或下载。3.2检索模块的实现3.2.1工作流程首先进行索引的建立,主索引在系统首次运行时,对数据源中的文件建立倒排文件,此后增量索引周期性执行,对新增的数据建立倒排文

7、件。检索进程将web转发过来的查询请求,在主索引文件和增量索引文件上进行查询,将二者查询的结果进行合并,再进行相关性排序。3.2.2索引进程索引进程根据配置文件对源数据进行采集,建立倒排文件,索引工作流程如下图所示:图2 索引工作流程图首先分析源数据的格式,若是txt等纯文本文档,则直接读入,如果是pdf等有特殊格式的文档,则调用相应的函数进行解析,再读入。然后为每个文档分配一个ID,把读入内存的文档进行中文分词,按照事先设置好的格式将文件ID、词汇、以及文件属性保存至倒排文件中。3.2.3 配置文件设置配置文件包含python路径设置、源数据定义、主索引定义、增量索引定义、检索进程的设置。配

8、置文件中包含这些区块:pythonsourceindexsourceindexIndexersearchdpython 设置python数据源的路径。source 中设置数据源的类型,以及数据源的名称。index中设置数据源的名称,索引文件的路径和文件名,文档属性的存放方式,最小索引词长度,中分分词配置,字符集编码类型等。Indexer中设置全局的index属性,索引过程内存使用限制,每秒最大I/O次数,写缓冲区的大小等。Searchd中设置监听的IP地址和端口,或UNIX与socket的路径,日志文件名,日志文件存放路径,网络客户端请求的读超时时间,子进程的最大数量,检索进程PID文件名等。

9、3.2.3倒排文件的格式倒排文件主要包含两个文件,分别是后缀名为.spa和.spd的文件。*.Spa主要存储文件的属性(DocInfo),检索程序启动时会把此文件加载到内存。另外可以通过配置文件指定DocInfo的存储方式:1)存储到spd文件中(Inline)2)另外单独存储,spa文件就是由这生成的。Spa文件的格式如下:图3 Spa文件格式图*.spd存储每个词ID可匹配的文档ID列表。Spd文件格式如下所示:图4 Spd文件格式图3.3 Web模块网站是基于flask+python构建的,主要功能是转发用户的查询请求,结果显示、下载等。3.3.1 用户登录用户进入网站后,首先进行身份验

10、证,输入事先约定好的用户名、密码。如果用户名或密码出错,则会转到弹出错误、刷新页面,提示用户继续输入正确的用户名和密码。3.3.2 查询用户在页面中指定的文本框中输入查询关键字,点击查询按钮,触发相应的search函数,判断此会话的用户是否已经登录,若还没有,则会跳到相应的登录页面,若已经登录,则相应的查询请求通过接口传送给检索进程,并等待检索进程返回的结果。3.3.3 结果显示相应查询请求的结果通过接口返回给页面,若查询结果为空,则刷新页面。若查询结果有多个,则通过pagination分页显示,并通过download函数为每个结果生成相应的链接,显示在查询时所在的页面上,连链接上显示的是文件

11、的属性,通过此链接,用户可以查看或下载相应的源数据。3.4 web模块和检索模块的接口Web模块和检索模块之间的接口实现是用python来写成的,用户的查询请求提交至服务器后,调用接口函数,把请求转发给后端的检索进程,查询后的结果再通过接口,用http协议返回给用户的页面。4系统主要代码文件系统的主要代码文件列述于表1中。表1 系统主要代码文件文件名作用csft_fastdfs_python.conf配置文件_init_.py收集源数据,处理不同格式的文件searchd.sh脚本,启动检索程序build.sh脚本,建立主索引、增量索引merge.sh脚本,主索引、增量索引的合并flaskr.p

12、yweb的逻辑处理部分search.pyweb中查询处理sphinxapi.pyweb和检索进程的接口layout.html页面的布局login.html登陆页面show_entries.html查询、结果显示页面附录:API说明1 _init_.py类MainSource中核心函数1.1 _init_原型:_init_(self,conf)说明:初始化主索引信息,读取配置文件,设置源数据的路径、起始ID、索引文件目录、字典目录、文件编码等。参数:指定的配置文件1.2 GetDirFile原型:GetDirFile(self,dirname)说明:从指定目录下读取文档,分析文档的格式,调取相应

13、的函数进行解析文档的内容和属性,最后保存至列表中。参数:dirname: 数据源所在的目录1.3 GetScheme原型:GetScheme(self)说明:获取被解析的文件包含哪些属性,以及属性的类型。1.4 GetFieldOrder原型:GetFieldOrder(self)说明:获取文档哪些属性需要被索引,以及这些属性的优先顺序1.5 Connected(self)原型: Connected(self)说明:如果数据源在数据库中,则通过这个函数进行数据库的连接。1.6 NextDocument原型:NextDocument(self,err)说明:取得每一个文档记录的调用,将其属性读入

14、,并保存至倒排文件中,若所有的文档都被处理完,则返回False2 _init_.py中 DistSource 类中的核心函数2.1 _init_原型:_init_(self,conf)说明:初始化增量索引信息,读取配置文件,设置源数据的路径、起始ID、索引文件目录、字典目录、文件编码等。参数:conf:指定的配置文件2.2 GetDirFile原型:GetDirFile(self,dirname)说明:从指定目录下读取文档,分析文档的格式,调取相应的函数进行解析文档的内容和属性,最后保存至列表中。参数:dirname: 数据源所在的目录2.3 GetScheme原型:GetScheme(sel

15、f)说明:获取被解析的文件包含哪些属性,以及属性的类型。2.4 GetFieldOrder原型:GetFieldOrder(self)说明:获取文档哪些属性需要被索引,以及这些属性的优先顺序2.5 Connected(self)原型: Connected(self)说明:如果数据源在数据库中,则通过这个函数进行数据库的连接。2.6 NextDocument原型:NextDocument(self,err)说明:取得每一个文档记录的调用,将其属性读入,并保存至倒排文件中,若所有的文档都被处理完,则返回False3 shpinxapi.py文件中ShinxClient类的核心函数3.1 _init

16、_.py原型:_init_.py说明:创建一个新的客户端对象,并设置ip、端口、超时时间等参数。3.2 Query原型:Query(self, query, index=*,comment=)说明:连接到检索进程,执行相应的查询请求。如果查询失败,则返回None.参数:query:查询的关键词 Index:查询所在的索引 3.3 Close(self)原型:Close(self)说明:断开与检索进程的连接。4 Search.py文件中的核心函数4.1 sphinx_search原型:sphinx_search(query):说明:通过接口建立与检索进程的连接,并调用查询函数,把返回的结果按照要求处理后返回。参数:query:查询的关键词5 flaskr.py中的核心函数5.1 login原型:login()说明:用户登录时,进行用户名和密码的验证。5.2 loginout()原型:loginout()说明:用户注销登录5.3 showresult原型:showresult(entries)说明:查询结果的显示参数:entries:所有的查询结果5.4 ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论