附录四城轨线网非结构化数据全文检索系统_设计_第1页
附录四城轨线网非结构化数据全文检索系统_设计_第2页
附录四城轨线网非结构化数据全文检索系统_设计_第3页
附录四城轨线网非结构化数据全文检索系统_设计_第4页
附录四城轨线网非结构化数据全文检索系统_设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、城轨线网非结构化数据全文检索系统设计文档作者:、刘建委、周桔红、马坚生、唐忠诚2014-06-04目录概述3系统概要设计3系统详细设计4系统实现4检索模块的实现4Web 模块7web 模块和检索模块的接口9系统主要代码文件10附录:函数与数据结构说明111 init .py 类 MainSource 中函数112 init .py 中 DistSource 类中的函数123 shpinxapi.py 文件中 ShinxCnt 类的函数134 Search.py 文件中的函数145 flaskr.py 中的函数141 概述针对城轨交通非结构化数据实现线网级全文检索;是广州城轨线网的全文检索系统;

2、可拓展用于其它城轨线网非结构化数据的检索系统。该全文检索系统能够实现对日常运营产生的一些文本文档等能够实现快速检索,能够快捷、有效的利用文本文档中的信息。后端采用 coreseek 做引擎、利用 mmseg 算法对中文文档进行分词,通过在主索引添加增量索引的方式保证结果的实时性,主索引和增量索引定期在系统的空闲时进行合并。前端基于 flask 框架构建 web 模块,使用构建了一个广州城轨线网全文检索系统,便于城轨通过关键字搜索城轨线网数据中心的非结构化数据,包括文档和等。2 系统概要设计城轨线网全文检索系统主要涉及两个主体部分:1)2)检索模块Web 模块Web 模块收到城轨输入的查询请求,

3、将其转发给检索模块,检索进已经构建好的的索引文件上进行查询,查询结果进行相关性排序后将通过接口返回给 web 页面,以的形式显示在页面上,系统结构如图 1 所示:选择查看或。Web模块检索模块主索引web主进程检索进程增量索引图 1全文检索系统结构图3 系统详细设计3.1 系统实现全文检索系统包括一个配置文件、两个功能模块以及一些文件:1)配置文件包含环境变量的设置,数据源的配置,主、增量索引的设置,中文分词的配置,检索进程的设置等。2)检索模块:索引进程首次运行时,自动和配置文件,将主索引设置中的源文件读进内存,用中分分词算法进行分割,并保存成倒排文件。通过周期的进行增量索引,将这一时间段新

4、增的数据进行索引。每天在固定的系统空闲时间,进行主、增量索引的合并,并对增量索引进行清空。检索时,对主索引和增量索引同时进行,并将查询结果进行相关性排序后返回给 web。3)Web 模块:对用户进行安全性验证,通过后,将用户的查询请求通过接口转发给检索进程,并将返回的结果抽取部分信息用的形式显示在页面上,用户选择感的进行查看或。3.2 检索模块的实现3.2.1 工作流程首先进行索引的建立,主索引在系统首次运行时,对数据源中的文件建立倒排文件,此后增量索引周期性执行,对新增的数据建立倒排文件。检索进程将web 转发过来的查询请求,在主索引文件和增量索引文件上进行查询,将二者查询的结果进行合并,再

5、进行相关性排序。3.2.2 索引进程的实现索引进程根据配置文件对源数据进行,建立倒排文件。首先分析源数据的格式,若是 txt 等纯文本文档,则直接读入,如果是 pdf 等有特殊格式的文档,则调用相应的函数进行,再读入。然后为每个文档分配一个 ID,把读入内存的文档进行中文分词,按照事先设置好的格式将文件 ID、词汇、以及文件属性保存至倒排文件中。索引工作流程如图 2 所示:分析文件的后缀名中文分词文件id词汇、文件id图 2 索引工作流程图3.2.3 检索模块配置文件设置检索模块配置文件如表 1 所示,包含路径设置、源数据定义、主索引定义、增量索引定义、检索进程的设置。配置文件中包含这些区块:

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

7、件、文件id)对分配idpdfpdf文件文件名称直接读入txt、cpp等文件3.2.3 倒排文件的格式倒排文件主要包含两个文件,分别是后缀名为.spa 和.spd 的文件。*.Spa 主要文件的属性(DocInfo),检索程序启动时会把此文件加载到内存。另外可以通过配置文件指定DocInfo 的方式:1到spd 文件中(Inline)2)另外单独,spa 文件就是由这生成的。Spa 文件的格式如下:一个文档信息图 3 Spa 文件格式图*.spd每个词 ID 可匹配的文档 ID 列表。Spd 文件格式如下所示:DocId文档id,4个字节或者8个字节DocInfo文档信息,这是一个指向文档数据

8、的指针。对于而言,就是指向某一行数据的起始位置。这一行的数据,作为一个DWORD类型的数组存放在一起。DocIdDocInfo(循环)DocId文档id,4个字节或者8个字节Hit_docin fo对应一份词汇在一个文档中的位置DocInfo当前行中每一列的数据Hit_location词汇在文档中命中的位置一个word中信息Word_hit info(循环多个Hit_docinfo)m_ulastDocFields最后一个出现在文档中的位置m_ulastDocHits在文档中出现了多少次(循环Word_hitinfo,有多少个分词,就有多少个Word_hitinfo)图 4 Spd 文件格式图

9、3.3 Web 模块Web模块基于 flask 框架构建,主要功能是转发用户的查询请求给检索模块,并将返回查询的结果显示在页面上,用于查看、。3.3.1 用户登录用户进入后,首先进行验证,输入事先约定好的用户名、。如果用户名或出错,则会转到弹出错误、刷新页面,提示用户继续输入正确的用户名和。登陆界面如图 5 所示:图 5 web 模块登陆界面3.3.2 查询用户在页面中指定的文本框中输入查询关键字,点击查询按钮,触发相应的search 函数,判断此会话的用户是否已经登录,若还没有,则会跳到相应的登录页面,若已经登录,则相应的查询请求通过接口传送给检索进程,并等待检索进程返回的结果。查询界面如图

10、 6 所示:图 6 web 模块查询界面3.3.3 结果显示相应查询请求的结果通过接口返回给页面,若查询结果为空,则刷新页面。若查询结果有多个,则通过 pagination 分页显示,并通过 download 函数为每个结果生成相应的,显示在查询时所在的页面上,连上显示的是文件的属相应的源数据。结果显示如图 7 所示:性,通过此,用户可以查看或图 7结果显示界面3.4 web 模块和检索模块的接口web 模块和检索模块之间的接口实现是用编写的, 封装在Sphinx_cnt 类中。用户的查询请求提交至服务器后,调用 Sphinx_cnt 的 Query函数,把请求转发给后端的检索进程,并等待返回

11、的查询结果。此外,Web 模块可以通过接口设置服务器的 ip 地址、端、索引名称、字段的权重以及匹配模式等。web 模块和检索模块数据交互流程如图 8 所示。检索模块web模块调用 返回结果Query函数返回检索结果图 8 web 模块和检索模块数据交互流程图4 系统主要代码文件城轨线网非结构化数据全文检索系统的主要代码文件列述于表 2。表 2 系统主要代码文件文件名作用csft_fastdfs_.conf配置文件 init .py收集源数据,处理不同格式的文件searchd.sh,启动检索程序build.sh,建立主索引、增量索引merge.sh,主索引、增量索引的合并flaskr.pywe

12、b 的逻辑处理部分search.pyweb 中查询处理sphinxapi.pyweb 和检索进程的接口layout.html页面的布局login.html登陆页面show_entries.html查询、结果显示页面检索进程Sphinx_cnt类web主进程附录:函数与数据结构说明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 Next原型:Next(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(self)说明:获取被的文件包含

15、哪些属性,以及属性的类型。2.4 GetFieldOrder原型:GetFieldOrder(self)说明:获取文档哪些属性需要被索引,以及这些属性的优先顺序2.5 Connected(self)原型: Connected(self)说明:如果数据源在数据库中,则通过这个函数进行数据库的连接。2.6 Next原型:Next(self,err)说明:取得每一个文档的调用,将其属性读入,并保存至倒排文件中,若所有的文档都被处理完,则返回False3 shpinxapi.py 文件中 ShinxCnt 类的函数3.1 init.py原型: init .py说明:创建一个新的客户端对象,并设置 ip

16、、端口、超时时间等参数。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

温馨提示

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

评论

0/150

提交评论