城軌線網(wǎng)非結(jié)構(gòu)化數(shù)據(jù)全文檢索軟件設(shè)計_第1頁
城軌線網(wǎng)非結(jié)構(gòu)化數(shù)據(jù)全文檢索軟件設(shè)計_第2頁
城軌線網(wǎng)非結(jié)構(gòu)化數(shù)據(jù)全文檢索軟件設(shè)計_第3頁
城軌線網(wǎng)非結(jié)構(gòu)化數(shù)據(jù)全文檢索軟件設(shè)計_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余9頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 城軌線網(wǎng)非結(jié)構(gòu)化數(shù)據(jù)全文檢索系統(tǒng)設(shè)計文檔作者:劉建委、周桔紅、唐忠誠小組審查:劉瓊2014-06-04目錄 TOC o 1-3 h z u HYPERLINK l _Toc389657270 1 概述 PAGEREF _Toc389657270 h 3 HYPERLINK l _Toc389657271 2 系統(tǒng)概要設(shè)計 PAGEREF _Toc389657271 h 3 HYPERLINK l _Toc389657272 2.1系統(tǒng)結(jié)構(gòu) PAGEREF _Toc389657272 h 3 HYPERLINK l _Toc389657273 3系統(tǒng)詳細(xì)設(shè)計 PAGEREF _Toc38965

2、7273 h 4 HYPERLINK l _Toc389657274 3.1系統(tǒng)實現(xiàn) PAGEREF _Toc389657274 h 4 HYPERLINK l _Toc389657275 3.2檢索模塊的實現(xiàn) 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系統(tǒng)主要代碼文件

3、PAGEREF _Toc389657278 h 8 HYPERLINK l _Toc389657279 附錄:API說明 PAGEREF _Toc389657279 h 9 HYPERLINK l _Toc389657280 1 _init_.py類MainSource中核心函數(shù) PAGEREF _Toc389657280 h 9 HYPERLINK l _Toc389657281 2 _init_.py中 DistSource 類中的核心函數(shù) PAGEREF _Toc389657281 h 10 HYPERLINK l _Toc389657282 3 shpinxapi.py文件中Shinx

4、Client類的核心函數(shù) PAGEREF _Toc389657282 h 11 HYPERLINK l _Toc389657283 4 Search.py文件中的核心函數(shù) PAGEREF _Toc389657283 h 12 HYPERLINK l _Toc389657284 5 flaskr.py中的核心函數(shù) PAGEREF _Toc389657284 h 121 概述軌道交通公司越來越重視非結(jié)構(gòu)化數(shù)據(jù)的檢索和利用,要求設(shè)計一套能夠快捷、有效的利用非結(jié)構(gòu)化數(shù)據(jù)的系統(tǒng),能夠?qū)崿F(xiàn)對日常運(yùn)營產(chǎn)生的一些文本文檔等能夠?qū)崿F(xiàn)快速檢索。該全文檢索系統(tǒng)后端采用coreseek做引擎、利用mmseg算法對中文

5、文檔進(jìn)行分詞,通過主索引+增量索引的方式保證結(jié)果的實時性,前端采用flask框架,構(gòu)建了一個信息檢索網(wǎng)站,用于用戶交互和結(jié)果展示。2 系統(tǒng)概要設(shè)計2.1系統(tǒng)結(jié)構(gòu)全文檢索系統(tǒng)主要設(shè)計兩個主體部分:檢索模塊Web模塊Web模塊將用戶的查詢請求轉(zhuǎn)發(fā)給檢索模塊,檢索模塊在已經(jīng)建立好的索引上進(jìn)行查詢,并將相應(yīng)的查詢結(jié)果通過接口返回給web。圖1 全文檢索系統(tǒng)結(jié)構(gòu)圖3系統(tǒng)詳細(xì)設(shè)計3.1系統(tǒng)實現(xiàn)全文檢索系統(tǒng)包括一個配置文件、兩個功能模塊以及一些腳本文件。配置文件包含環(huán)境變量的設(shè)置,數(shù)據(jù)源的配置,主、備索引的設(shè)置,中文分詞的配置,檢索進(jìn)程的設(shè)置等。檢索模塊:索引進(jìn)程首次運(yùn)行時,自動讀取和解析配置文件,將主索引

6、設(shè)置中的源文件讀進(jìn)內(nèi)存,用中分分詞算法進(jìn)行分割,并保存成倒排文件。通過腳本周期的進(jìn)行增量索引,將這一時間段新增的數(shù)據(jù)進(jìn)行索引。每天在固定的系統(tǒng)空閑時間,進(jìn)行主、增量索引的合并,并對增量索引進(jìn)行清空。檢索時,對主索引和增量索引同時進(jìn)行,并將查詢結(jié)果進(jìn)行相關(guān)性排序后返回給web。Web模塊:對用戶進(jìn)行安全性驗證,通過后,將用戶的查詢請求通過接口轉(zhuǎn)發(fā)給檢索進(jìn)程,并將返回的結(jié)果抽取部分信息用鏈接的形式顯示在頁面上,用戶選擇感興趣的進(jìn)行查看或下載。3.2檢索模塊的實現(xiàn)3.2.1工作流程首先進(jìn)行索引的建立,主索引在系統(tǒng)首次運(yùn)行時,對數(shù)據(jù)源中的文件建立倒排文件,此后增量索引周期性執(zhí)行,對新增的數(shù)據(jù)建立倒排文

7、件。檢索進(jìn)程將web轉(zhuǎn)發(fā)過來的查詢請求,在主索引文件和增量索引文件上進(jìn)行查詢,將二者查詢的結(jié)果進(jìn)行合并,再進(jìn)行相關(guān)性排序。3.2.2索引進(jìn)程索引進(jìn)程根據(jù)配置文件對源數(shù)據(jù)進(jìn)行采集,建立倒排文件,索引工作流程如下圖所示:圖2 索引工作流程圖首先分析源數(shù)據(jù)的格式,若是txt等純文本文檔,則直接讀入,如果是pdf等有特殊格式的文檔,則調(diào)用相應(yīng)的函數(shù)進(jìn)行解析,再讀入。然后為每個文檔分配一個ID,把讀入內(nèi)存的文檔進(jìn)行中文分詞,按照事先設(shè)置好的格式將文件ID、詞匯、以及文件屬性保存至倒排文件中。3.2.3 配置文件設(shè)置配置文件包含python路徑設(shè)置、源數(shù)據(jù)定義、主索引定義、增量索引定義、檢索進(jìn)程的設(shè)置。配

8、置文件中包含這些區(qū)塊:pythonsourceindexsourceindexIndexersearchdpython 設(shè)置python數(shù)據(jù)源的路徑。source 中設(shè)置數(shù)據(jù)源的類型,以及數(shù)據(jù)源的名稱。index中設(shè)置數(shù)據(jù)源的名稱,索引文件的路徑和文件名,文檔屬性的存放方式,最小索引詞長度,中分分詞配置,字符集編碼類型等。Indexer中設(shè)置全局的index屬性,索引過程內(nèi)存使用限制,每秒最大I/O次數(shù),寫緩沖區(qū)的大小等。Searchd中設(shè)置監(jiān)聽的IP地址和端口,或UNIX與socket的路徑,日志文件名,日志文件存放路徑,網(wǎng)絡(luò)客戶端請求的讀超時時間,子進(jìn)程的最大數(shù)量,檢索進(jìn)程PID文件名等。

9、3.2.3倒排文件的格式倒排文件主要包含兩個文件,分別是后綴名為.spa和.spd的文件。*.Spa主要存儲文件的屬性(DocInfo),檢索程序啟動時會把此文件加載到內(nèi)存。另外可以通過配置文件指定DocInfo的存儲方式:1)存儲到spd文件中(Inline)2)另外單獨存儲,spa文件就是由這生成的。Spa文件的格式如下:圖3 Spa文件格式圖*.spd存儲每個詞ID可匹配的文檔ID列表。Spd文件格式如下所示:圖4 Spd文件格式圖3.3 Web模塊網(wǎng)站是基于flask+python構(gòu)建的,主要功能是轉(zhuǎn)發(fā)用戶的查詢請求,結(jié)果顯示、下載等。3.3.1 用戶登錄用戶進(jìn)入網(wǎng)站后,首先進(jìn)行身份驗

10、證,輸入事先約定好的用戶名、密碼。如果用戶名或密碼出錯,則會轉(zhuǎn)到彈出錯誤、刷新頁面,提示用戶繼續(xù)輸入正確的用戶名和密碼。3.3.2 查詢用戶在頁面中指定的文本框中輸入查詢關(guān)鍵字,點擊查詢按鈕,觸發(fā)相應(yīng)的search函數(shù),判斷此會話的用戶是否已經(jīng)登錄,若還沒有,則會跳到相應(yīng)的登錄頁面,若已經(jīng)登錄,則相應(yīng)的查詢請求通過接口傳送給檢索進(jìn)程,并等待檢索進(jìn)程返回的結(jié)果。3.3.3 結(jié)果顯示相應(yīng)查詢請求的結(jié)果通過接口返回給頁面,若查詢結(jié)果為空,則刷新頁面。若查詢結(jié)果有多個,則通過pagination分頁顯示,并通過download函數(shù)為每個結(jié)果生成相應(yīng)的鏈接,顯示在查詢時所在的頁面上,連鏈接上顯示的是文件

11、的屬性,通過此鏈接,用戶可以查看或下載相應(yīng)的源數(shù)據(jù)。3.4 web模塊和檢索模塊的接口Web模塊和檢索模塊之間的接口實現(xiàn)是用python來寫成的,用戶的查詢請求提交至服務(wù)器后,調(diào)用接口函數(shù),把請求轉(zhuǎn)發(fā)給后端的檢索進(jìn)程,查詢后的結(jié)果再通過接口,用http協(xié)議返回給用戶的頁面。4系統(tǒng)主要代碼文件系統(tǒng)的主要代碼文件列述于表1中。表1 系統(tǒng)主要代碼文件文件名作用csft_fastdfs_python.conf配置文件_init_.py收集源數(shù)據(jù),處理不同格式的文件searchd.sh腳本,啟動檢索程序build.sh腳本,建立主索引、增量索引merge.sh腳本,主索引、增量索引的合并flaskr.p

12、yweb的邏輯處理部分search.pyweb中查詢處理sphinxapi.pyweb和檢索進(jìn)程的接口layout.html頁面的布局login.html登陸頁面show_entries.html查詢、結(jié)果顯示頁面附錄:API說明1 _init_.py類MainSource中核心函數(shù)1.1 _init_原型:_init_(self,conf)說明:初始化主索引信息,讀取配置文件,設(shè)置源數(shù)據(jù)的路徑、起始ID、索引文件目錄、字典目錄、文件編碼等。參數(shù):指定的配置文件1.2 GetDirFile原型:GetDirFile(self,dirname)說明:從指定目錄下讀取文檔,分析文檔的格式,調(diào)取相應(yīng)

13、的函數(shù)進(jìn)行解析文檔的內(nèi)容和屬性,最后保存至列表中。參數(shù):dirname: 數(shù)據(jù)源所在的目錄1.3 GetScheme原型:GetScheme(self)說明:獲取被解析的文件包含哪些屬性,以及屬性的類型。1.4 GetFieldOrder原型:GetFieldOrder(self)說明:獲取文檔哪些屬性需要被索引,以及這些屬性的優(yōu)先順序1.5 Connected(self)原型: Connected(self)說明:如果數(shù)據(jù)源在數(shù)據(jù)庫中,則通過這個函數(shù)進(jìn)行數(shù)據(jù)庫的連接。1.6 NextDocument原型:NextDocument(self,err)說明:取得每一個文檔記錄的調(diào)用,將其屬性讀入

14、,并保存至倒排文件中,若所有的文檔都被處理完,則返回False2 _init_.py中 DistSource 類中的核心函數(shù)2.1 _init_原型:_init_(self,conf)說明:初始化增量索引信息,讀取配置文件,設(shè)置源數(shù)據(jù)的路徑、起始ID、索引文件目錄、字典目錄、文件編碼等。參數(shù):conf:指定的配置文件2.2 GetDirFile原型:GetDirFile(self,dirname)說明:從指定目錄下讀取文檔,分析文檔的格式,調(diào)取相應(yīng)的函數(shù)進(jìn)行解析文檔的內(nèi)容和屬性,最后保存至列表中。參數(shù):dirname: 數(shù)據(jù)源所在的目錄2.3 GetScheme原型:GetScheme(sel

15、f)說明:獲取被解析的文件包含哪些屬性,以及屬性的類型。2.4 GetFieldOrder原型:GetFieldOrder(self)說明:獲取文檔哪些屬性需要被索引,以及這些屬性的優(yōu)先順序2.5 Connected(self)原型: Connected(self)說明:如果數(shù)據(jù)源在數(shù)據(jù)庫中,則通過這個函數(shù)進(jìn)行數(shù)據(jù)庫的連接。2.6 NextDocument原型:NextDocument(self,err)說明:取得每一個文檔記錄的調(diào)用,將其屬性讀入,并保存至倒排文件中,若所有的文檔都被處理完,則返回False3 shpinxapi.py文件中ShinxClient類的核心函數(shù)3.1 _init

16、_.py原型:_init_.py說明:創(chuàng)建一個新的客戶端對象,并設(shè)置ip、端口、超時時間等參數(shù)。3.2 Query原型:Query(self, query, index=*,comment=)說明:連接到檢索進(jìn)程,執(zhí)行相應(yīng)的查詢請求。如果查詢失敗,則返回None.參數(shù):query:查詢的關(guān)鍵詞 Index:查詢所在的索引 3.3 Close(self)原型:Close(self)說明:斷開與檢索進(jìn)程的連接。4 Search.py文件中的核心函數(shù)4.1 sphinx_search原型:sphinx_search(query):說明:通過接口建立與檢索進(jìn)程的連接,并調(diào)用查詢函數(shù),把返回的結(jié)果按照要求處理后返回。參數(shù):query:查詢的關(guān)鍵詞5 flaskr.py中的核心函數(shù)5.1 login原型:login()說明:用戶登錄時,進(jìn)行用戶名和密碼的驗證。5.2 loginout()原型:loginout()說明:用戶注銷登錄5.3 showresult原型:showresult(entries)說明:查詢結(jié)果的顯示參數(shù):entries:所有的查詢結(jié)果5.4 ge

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論