亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于HDFS的文件檢索系統(tǒng)的制作方法

文檔序號(hào):12177355閱讀:426來(lái)源:國(guó)知局

本發(fā)明屬于分布式搜索引擎領(lǐng)域,具體涉及一種基于HDFS的文件檢索系統(tǒng)。



背景技術(shù):

傳統(tǒng)的全文檢索系統(tǒng)是基于Lucene實(shí)現(xiàn)。使用Lucene能夠?qū)崿F(xiàn)文件索引的建立、優(yōu)化和查詢。但當(dāng)索引文件增加到一定數(shù)量時(shí),由于Lucene的內(nèi)部機(jī)制導(dǎo)致大量的數(shù)據(jù)被載入了內(nèi)存,查詢完后才會(huì)被丟棄。大量數(shù)據(jù)占據(jù)內(nèi)存后,將會(huì)使Java虛擬機(jī)(JVM)頻繁進(jìn)行拉近回收,導(dǎo)致查詢性能出現(xiàn)嚴(yán)重的瓶頸。而且傳統(tǒng)的文件檢索系統(tǒng)都是單機(jī)系統(tǒng)。隨著大數(shù)據(jù)時(shí)代的到來(lái),單機(jī)文件檢索系統(tǒng)無(wú)法處理海量數(shù)據(jù),其索引創(chuàng)建耗時(shí)較長(zhǎng),查詢效率低下。

Hadoop框架是目前主流的跨集群分布式大數(shù)據(jù)處理框架,其子模塊Hadoop Distributed File System(HDFS)是一個(gè)分布式的文件系統(tǒng),該系統(tǒng)可以提供了高吞吐數(shù)據(jù)訪問(wèn)能力。包括亞馬遜、Adobe和阿里巴巴在內(nèi)的眾多國(guó)內(nèi)外大型企業(yè)都在使用Hadoop框架進(jìn)行數(shù)據(jù)管理和分析工作。Apache Spark是一個(gè)基于內(nèi)存迭代的并行計(jì)算框架,支持訪問(wèn)Hadoop HDFS上的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行索引創(chuàng)建。Elasticsearch是彈性分布式檢索引擎,Spark計(jì)算后的索引可以存儲(chǔ)在Elasticsearch集群中,以方便用戶訪問(wèn)。Hadoop、Spark和Elasticsearch集群均采用主從結(jié)構(gòu),具有很好的擴(kuò)展性,適用于海量數(shù)據(jù)的并行計(jì)算。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)上述現(xiàn)有技術(shù)存在的不足,本發(fā)明提供一種基于HDFS的文件檢索系統(tǒng)。

本發(fā)明的技術(shù)方案如下:

一種基于HDFS的文件檢索系統(tǒng),包括:系統(tǒng)配置模塊、文件管理模塊、索引管理模塊、檢索門(mén)戶模塊、MongoDB數(shù)據(jù)庫(kù)和后臺(tái)存儲(chǔ)計(jì)算集群;所述后臺(tái)存儲(chǔ)計(jì)算集群包括HDFS集群、Spark集群和ElasticSearch集群;

所述系統(tǒng)配置模塊,用于配置后臺(tái)存儲(chǔ)計(jì)算集群參數(shù)和索引配置表,并將索引配置表發(fā)送給MongoDB數(shù)據(jù)庫(kù)。

所述文件管理模塊,用于接收文件,生成該文件的文件ID和文件信息,將文件信息發(fā)送給MongoDB數(shù)據(jù)庫(kù);接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)位置,將文件、文件ID和存儲(chǔ)位置發(fā)送給HDFS集群,并生成包含文件ID、文件信息和存儲(chǔ)位置的文件記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù);向HDFS集群發(fā)送文件ID、存儲(chǔ)位置和下載文件消息;向HDFS集群發(fā)送文件ID、存儲(chǔ)位置和刪除文件消息;接收HDFS集群發(fā)送的文件。所述文件記錄包括:文件ID、文件名稱、文件類型、文件大小、上傳時(shí)間、上傳作者、存儲(chǔ)位置和索引版本號(hào);所述索引配置表包括:文件類型、存儲(chǔ)位置、是否索引文件名稱、是否索引文件類型、是否索引文件大小、是否全文索引、是否索引上傳作者字段。

所述HDFS集群,用于接收文件管理模塊發(fā)送的文件、文件ID和存儲(chǔ)位置,并根據(jù)存儲(chǔ)位置存儲(chǔ)文件和文件ID;接收文件管理模塊發(fā)送的文件ID、存儲(chǔ)位置和下載文件消息或文件ID、存儲(chǔ)位置和刪除文件消息,在存儲(chǔ)位置中根據(jù)文件ID下載文件并發(fā)送給文件管理模塊或刪除文件;接收Spark集群從節(jié)點(diǎn)發(fā)送的文件ID和存儲(chǔ)位置,在存儲(chǔ)位置對(duì)應(yīng)目錄中下載文件并發(fā)送給Spark集群從節(jié)點(diǎn)。

所述索引管理模塊,用于將文件信息發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄,提取文件ID,判斷操作類型,如果是更新索引操作,將文件ID和刪除索引消息發(fā)送到ElasticSerch集群,將文件ID發(fā)送給Spark集群,如果是索引創(chuàng)建操作,將文件ID發(fā)送給Spark集群進(jìn)行索引創(chuàng)建;接收Spark集群發(fā)送索引創(chuàng)建成功消息,生成索引記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù);匹配索引記錄中的文件ID和刪除索引消息發(fā)送到ElasticSerch集群,并向MongoDB數(shù)據(jù)庫(kù)發(fā)送文件ID和刪除索引記錄。

所述檢索門(mén)戶模塊,用于將檢索條件發(fā)送給ElasticSearch集群,接收ElasticSearch集群發(fā)送的檢索結(jié)果,并生成檢索日志發(fā)送給MongoDB數(shù)據(jù)庫(kù);定時(shí)查詢檢索日志表,對(duì)檢索條件根據(jù)重復(fù)度降序排列,獲得排序靠前的檢索條件進(jìn)行熱門(mén)推薦,并發(fā)送到web頁(yè)面顯示。

所述Spark集群包括Spark集群主節(jié)點(diǎn)和Spark集群從節(jié)點(diǎn),Spark集群主節(jié)點(diǎn)接收文件ID,并將文件ID發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄和匹配索引配置表,將匹配文件記錄和匹配索引配置表發(fā)送給Spark集群從節(jié)點(diǎn);Spark集群從節(jié)點(diǎn)執(zhí)行如下步驟:a判斷是否全文索引字段,如果是,將文件ID和存儲(chǔ)位置發(fā)送給HDFS集群,接收文件,依次對(duì)該文件內(nèi)容進(jìn)行base64編碼、Apache Tika解析和IKAnalyser分詞,并設(shè)置key為file,將分詞后的文件內(nèi)容放入value中,將key和value存入hashmap中,執(zhí)行b,否則,執(zhí)行b;b判斷是否索引文件名稱的字段,如果是,則設(shè)置key為filename,設(shè)置value為使用IkAnalyser對(duì)文件名稱分詞后的結(jié)果,并將key和value存入hashmap中,執(zhí)行c,否則,執(zhí)行c;c判斷是否索引文件大小的字段值,如果是,則設(shè)置key為filesize,設(shè)置value為文件大小,將key和value存入hashmap中,執(zhí)行d,否則執(zhí)行d;d判斷是否索引文件類型的字段,如果是,則設(shè)置key為filetype,設(shè)置value為文件類型,將key和value存入hashmap中,執(zhí)行e,否則,執(zhí)行e;判斷是否索引上傳作者的字段,如果是,則設(shè)置key為fileauthor,設(shè)置value為上傳作者,并將key和value存入hashmap中,執(zhí)行f,否則,執(zhí)行f;f獲取當(dāng)前時(shí)間作為索引創(chuàng)建時(shí)間,設(shè)置key為indextime,設(shè)置value為索引創(chuàng)建時(shí)間,將key和value存入hashmap中;將文件ID放入hashmap中;將hashmap中內(nèi)容以“(key->value)->文件ID”格式創(chuàng)建索引,將索引分割成n個(gè)索引分片,每個(gè)索引分片擁有≥1個(gè)副本,將n個(gè)索引分片及其副本發(fā)送給ElasticSerach集群。

所述ElasticSerch集群包括ElasticSerach集群主節(jié)點(diǎn)和ElasticSerach集群從節(jié)點(diǎn),ElasticSerach集群主節(jié)點(diǎn)接收Spark集群從節(jié)點(diǎn)發(fā)送的n個(gè)索引分片及其副本,并分別發(fā)送給ElasticSerach集群的n個(gè)ElasticSerach集群從節(jié)點(diǎn)存儲(chǔ);接收索引管理模塊發(fā)送的文件ID和刪除索引消息,刪除文件ID對(duì)應(yīng)的索引;接收檢索門(mén)戶模塊發(fā)送的檢索條件,將檢索條件提交到ElasticSearch集群從節(jié)點(diǎn);各ElasticSearch集群從節(jié)點(diǎn)將檢索條件與索引中value進(jìn)行模糊匹配,并提取匹配索引中的文件ID,將文件ID對(duì)應(yīng)的所有value中的內(nèi)容作為匹配文件信息即檢索結(jié)果發(fā)送給檢索門(mén)戶模塊。

所述MongoDB數(shù)據(jù)庫(kù),用于接收系統(tǒng)配置模塊發(fā)送的索引配置表并存儲(chǔ);接收文件管理模塊發(fā)送的文件信息,并根據(jù)索引配置表將文件信息對(duì)應(yīng)的存儲(chǔ)位置發(fā)送給文件管理模塊;接收文件管理模塊發(fā)送的文件記錄并存儲(chǔ);所述MongoDB數(shù)據(jù)庫(kù)接收Spark集群主節(jié)點(diǎn)發(fā)送的文件ID,并與文件記錄進(jìn)行匹配,提取匹配文件記錄中文件類型與索引配置表匹配,將匹配文件記錄和匹配索引配置表發(fā)送給Spark集群主節(jié)點(diǎn);接收索引管理模塊發(fā)送的文件信息,并與文件記錄進(jìn)行匹配,將匹配文件記錄發(fā)送給索引管理模塊;接收索引管理模塊發(fā)送的索引記錄并存儲(chǔ);接收檢索門(mén)戶模塊發(fā)送的檢索日志并存儲(chǔ)。接收文件管理模塊發(fā)送文件信息并與文件記錄進(jìn)行匹配,得到匹配文件記錄發(fā)送給文件管理模塊。接收索引管理模塊發(fā)送的文件ID和刪除索引記錄,刪除文件ID對(duì)應(yīng)的索引記錄。

有益效果:本發(fā)明的一種基于HDFS的文件檢索系統(tǒng)與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):

1、采用HDFS集群作為數(shù)據(jù)存儲(chǔ)集群,Spark集群作為索引計(jì)算集群,ElasticSearch集群作為查詢集群,均采用分布式方式實(shí)現(xiàn)。HDFS集群具有很好的容錯(cuò)性和可擴(kuò)展性,能夠滿足海量數(shù)據(jù)的存儲(chǔ)需求;Spark集群進(jìn)行索引創(chuàng)建時(shí),采用的是分布式內(nèi)存迭代計(jì)算的方式,處理海量數(shù)據(jù)集的同時(shí)具有較高的計(jì)算速度;ElasticSearch集群采用索引分片的方式對(duì)索引進(jìn)行管理,索引分片的多份副本存儲(chǔ)在不同從節(jié)點(diǎn),采用分而治之的策略,減輕查詢負(fù)載,提高查詢效率;

2、采用主從架構(gòu)具有很好的水平擴(kuò)展性和穩(wěn)定性,只需增加從節(jié)點(diǎn)的數(shù)目就可以提升集群整體的處理能力,單一節(jié)點(diǎn)宕機(jī)并不會(huì)影響集群的正常工作;

3、采用副本冗余策略,能夠保證索引的可靠性與完整性。

附圖說(shuō)明

圖1本發(fā)明一種實(shí)施方式的基于HDFS的文件檢索系統(tǒng)結(jié)構(gòu)框圖。

具體實(shí)施方式

下面結(jié)合附圖對(duì)本發(fā)明的一種實(shí)施方式作詳細(xì)說(shuō)明。

如圖1所示,本實(shí)施方式的一種基于HDFS的文件檢索系統(tǒng),設(shè)置在4臺(tái)PC(Intel(R)Core(TM)i7-4790@3.60GHZ,8G,1T):PC1、PC2、PC3和PC4上,4臺(tái)PC由100M網(wǎng)互聯(lián)。

該系統(tǒng)包括:面向管理員的系統(tǒng)配置模塊、文件管理模塊和索引管理模塊、面向用戶的檢索門(mén)戶模塊、MongoDB數(shù)據(jù)庫(kù)以及后臺(tái)存儲(chǔ)計(jì)算集群;所述后臺(tái)存儲(chǔ)計(jì)算集群包括HDFS集群、Spark集群、Elastic Search集群;其中,HDFS(Hadoop Distributed File System)集群為分布式文件存儲(chǔ)集群,Spark集群為索引計(jì)算集群,ElasticSearch集群為索引存儲(chǔ)集群,三個(gè)集群均采用主從架構(gòu),即1個(gè)主節(jié)點(diǎn),2個(gè)從節(jié)點(diǎn),分別部署在PC1、PC2、PC3三臺(tái)PC機(jī)上,MongoDB數(shù)據(jù)庫(kù)、系統(tǒng)配置模塊、文件管理模塊、索引管理模塊和檢索門(mén)戶模塊均部署在PC4的Tomcat服務(wù)器(WEB服務(wù)器)中。

各臺(tái)PC與系統(tǒng)對(duì)應(yīng)關(guān)系如表1所示:

表1 PC機(jī)與系統(tǒng)對(duì)應(yīng)關(guān)系表

所述系統(tǒng)配置模塊,用于配置后臺(tái)存儲(chǔ)計(jì)算集群參數(shù)和索引配置表,并將索引配置表并發(fā)送給MongoDB數(shù)據(jù)庫(kù);本實(shí)施方式中,后臺(tái)存儲(chǔ)計(jì)算集群參數(shù)包括:集群名稱、集群主節(jié)點(diǎn)IP、集群端口號(hào);索引配置表包括:文件類型、存儲(chǔ)位置、是否索引文件名稱、是否索引文件類型、是否索引文件大小、是否全文索引、是否索引上傳作者字段;文件類型包括:視頻,音頻,文本,圖像,壓縮,其它;

所述文件管理模塊,用于文件上傳、下載和刪除;在文件上傳階段,獲取上傳文件的文件信息,包括文件名稱、文件類型、文件大小、上傳時(shí)間和上傳作者,生成文件ID,將文件類型發(fā)送給MongoDB數(shù)據(jù)庫(kù);接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)位置,將文件、文件ID和存儲(chǔ)位置上傳給HDFS集群,并生成文件記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù);所述文件記錄包含:文件名稱、文件ID、文件類型、文件大小、上傳時(shí)間、上傳作者、存儲(chǔ)位置和索引版本號(hào);其中,索引版本號(hào)為0。在文件下載與刪除階段,將待下載或刪除的文件信息發(fā)送給MongoDB數(shù)據(jù)庫(kù),文件信息包括文件名稱或文件類型,接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄,以分頁(yè)形式將匹配文件記錄發(fā)送給web頁(yè)面顯示,并獲取存儲(chǔ)位置和文件ID,向HDFS集群發(fā)送文件ID、存儲(chǔ)位置和下載文件或刪除文件消息;接收HDFS集群下載的文件;

HDFS集群,用于將文件管理模塊上傳的文件和文件ID根據(jù)存儲(chǔ)位置存儲(chǔ)在對(duì)應(yīng)目錄下;接收文件管理模塊發(fā)送的文件ID、存儲(chǔ)位置和下載文件或刪除文件消息,在存儲(chǔ)位置對(duì)應(yīng)目錄中刪除文件或下載文件并發(fā)送給文件管理模塊;

所述索引管理模塊,用于索引創(chuàng)建、更新、查詢和刪除;在索引創(chuàng)建階段,將文件名稱和文件類型發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄發(fā)送給web頁(yè)面顯示,提取文件ID并保存到一個(gè)數(shù)組中,通過(guò)ssh協(xié)議,將數(shù)組發(fā)送給Spark集群;接收Spark集群發(fā)送索引創(chuàng)建成功消息和索引創(chuàng)建時(shí)間,生成索引記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù);所述索引記錄包括:文件ID、文件名稱、文件類型、存儲(chǔ)位置、上傳作者、索引版本號(hào)、是否索引文件名稱、是否索引文件類型、是否索引文件大小、是否全文索引、是否索引上傳作者以及索引創(chuàng)建時(shí)間,其中,索引版本號(hào)為1。

在索引更新階段,將文件信息發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄,得到文件ID,將文件ID和刪除索引消息發(fā)送到ElasticSerch集群,將文件ID保存到一個(gè)數(shù)組中,通過(guò)ssh協(xié)議,將數(shù)組發(fā)送給Spark集群進(jìn)行索引創(chuàng)建;接收Spark集群發(fā)送的索引創(chuàng)建成功消息和索引創(chuàng)建時(shí)間,生成索引記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù)。所述索引記錄包括:文件ID、文件名稱、文件類型、存儲(chǔ)位置、上傳作者、索引版本號(hào)加1、是否索引文件名稱、是否索引文件類型、是否索引文件大小、是否全文索引、是否索引上傳作者以及索引創(chuàng)建時(shí)間。

在索引查詢和刪除階段,將查詢條件發(fā)送給MongoDB數(shù)據(jù)庫(kù);查詢條件包括:文件名稱、文件類型或索引創(chuàng)建時(shí)間;接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配索引記錄,以分頁(yè)的形式將匹配索引記錄發(fā)送給Web頁(yè)面顯示,并將匹配索引記錄中的文件ID和刪除索引消息發(fā)送到ElasticSerch集群,向MongoDB數(shù)據(jù)庫(kù)發(fā)送文件ID和刪除索引記錄消息;

所述檢索門(mén)戶模塊,在文件檢索階段,用于獲取用戶輸入的檢索類型,并發(fā)送給ElasticSearch集群,檢索類型為模糊檢索或全文檢索;獲取用戶輸入的檢索條件發(fā)送給ElasticSearch集群,檢索條件包括檢索關(guān)鍵詞和檢索文件類型;接收ElasticSearch集群發(fā)送的檢索結(jié)果,并生成檢索日志發(fā)送給MongoDB數(shù)據(jù)庫(kù),檢索日志包括:檢索日志ID、用戶名稱,檢索時(shí)間,檢索關(guān)鍵詞,檢索結(jié)果記錄;

在高級(jí)檢索階段,獲取用戶輸入檢索條件,檢索條件包括:已知關(guān)鍵詞,未知關(guān)鍵詞、文件類型或索引創(chuàng)建時(shí)間,若用戶沒(méi)有輸入檢索條件,則返回結(jié)果為空到web頁(yè)面;若用戶輸入任意檢索條件組合,則將檢索條件發(fā)送到ElasticSearch集群;接收ElasticSearch集群發(fā)送的檢索結(jié)果,并生成檢索日志寫(xiě)入MongoDB數(shù)據(jù)庫(kù)檢索日志表中,檢索日志包括:檢索日志ID、用戶名稱,檢索時(shí)間,檢索條件,檢索結(jié)果記錄;

在熱門(mén)推薦階段,用于每隔10分鐘查詢一次檢索日志表,對(duì)檢索關(guān)鍵詞字段根據(jù)重復(fù)度進(jìn)行降序排列,獲得前10條檢索關(guān)鍵詞記錄,并發(fā)送到web頁(yè)面顯示;

Spark集群包括Spark集群主節(jié)點(diǎn)和Spark集群從節(jié)點(diǎn),Spark集群主節(jié)點(diǎn)用于接收文件ID,將文件ID發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄和匹配索引配置表,獲得該文件的元數(shù)據(jù)信息,所述元數(shù)據(jù)信息包括:文件ID、文件名稱、文件類型、存儲(chǔ)位置、上傳作者、索引版本號(hào)、是否索引文件名稱、是否索引文件類型、是否索引文件大小、是否全文索引和是否索引上傳作者;根據(jù)文件類型,將文件元數(shù)據(jù)信息通過(guò)Hash處理劃分到不同分區(qū)即不同的Spark集群從節(jié)點(diǎn),其中,分區(qū)策略為Hash分區(qū);將各Spark集群從節(jié)點(diǎn)中文件元數(shù)據(jù)根據(jù)是否全文索引進(jìn)行索引創(chuàng)建:a各個(gè)從節(jié)點(diǎn)獲取各分區(qū)數(shù)據(jù),將該分區(qū)中的文件元數(shù)據(jù)根據(jù)是否全文索引分為A類集合和B類集合,其中A類集合為全文索引,B類集合為非全文索引即元數(shù)據(jù)索引,并生成一個(gè)key、value與文件ID的hashmap映射,其中key為索引項(xiàng)名稱,value為分詞后的數(shù)據(jù);b判斷B類集合中的文件元數(shù)據(jù)中是否全文索引配置與文件類型是否有不匹配情況,有,修改是否全文索引的配置,并將修改后的該文件元數(shù)據(jù)移入A類中,并執(zhí)行步驟c;否則,執(zhí)行步驟d;c判斷A類集合中是否為空,是,執(zhí)行步驟d;否則,首先根據(jù)A類集合中文件元數(shù)據(jù)的文件ID和存儲(chǔ)位置從HDFS集群獲得文件,依次對(duì)該文件進(jìn)行base64編碼、Apache Tika解析和IKAnalyser分詞,并設(shè)置key為file,將分詞后的文件內(nèi)容放入value中,將key和value存入hashmap中;對(duì)于A類集合中文件元數(shù)據(jù),如果是否索引文件名稱的字段值為是,則設(shè)置key為filename,設(shè)置value為使用IkAnalyser對(duì)文件名稱分詞后的結(jié)果,并將key和value存入hashmap中;如果是否索引文件大小的字段值為是,則設(shè)置key為filesize,設(shè)置value為文件大小,將key和value存入hashmap中;如果是否索引文件類型的字段值為是,則設(shè)置key為filetype,設(shè)置value為文件類型,將key和value存入hashmap中;如果是否索引上傳作者的字段值為是,則設(shè)置key為fileauthor,設(shè)置value為上傳作者,并將key和value存入hashmap中;獲取當(dāng)前時(shí)間作為索引創(chuàng)建時(shí)間,設(shè)置key為indextime,設(shè)置value為索引創(chuàng)建時(shí)間,將key和value存入hashmap中;d對(duì)于B類集合中文件元數(shù)據(jù),如果是否索引文件名稱的字段值為是,則設(shè)置key為filename,value為使用IkAnalyser對(duì)文件名稱分詞后的結(jié)果,并將key和value存入hashmap中;如果是否索引文件大小的字段值為是,則設(shè)置key為filesize,設(shè)置value為文件大小,將key和value存入hashmap中;如果是否索引文件類型的字段值為是,則設(shè)置key為filetype,設(shè)置value為文件類型,將key和value存入hashmap中;如果是否索引上傳作者的字段值為是,則設(shè)置key為fileauthor,設(shè)置value為上傳作者,并將key和value存入hashmap中;獲取當(dāng)前時(shí)間作為索引創(chuàng)建時(shí)間,設(shè)置key為indextime,設(shè)置value為索引創(chuàng)建時(shí)間,將key和value存入hashmap中;e將hashmap中內(nèi)容以“(key->value)->文件ID”格式創(chuàng)建索引,并將索引分割成n個(gè)索引分片,每個(gè)索引分片可以擁有1個(gè)或多個(gè)副本,將n個(gè)索引分片及其副本發(fā)送給ElasticSerach集群;f將索引創(chuàng)建成功消息和索引創(chuàng)建時(shí)間發(fā)送給索引管理模塊;

ElasticSerch集群包括ElasticSerach集群主節(jié)點(diǎn)和ElasticSerach集群從節(jié)點(diǎn),ElasticSerach集群主節(jié)點(diǎn)接收索引管理模塊發(fā)送的文件ID和刪除索引消息,并刪除ElasticSerach集群從節(jié)點(diǎn)中文件ID對(duì)應(yīng)的索引;ElasticSerach集群主節(jié)點(diǎn)接收Spark集群從節(jié)點(diǎn)發(fā)送的n個(gè)索引分片及其副本,并分別發(fā)送給ElasticSerach集群的n個(gè)從節(jié)點(diǎn)存儲(chǔ);接收檢索門(mén)戶模塊發(fā)送的檢索條件并根據(jù)檢索條件與索引匹配,將檢索結(jié)果發(fā)送給檢索門(mén)戶模塊,本實(shí)施方式中,在文件檢索階段,ElasticSerach集群主節(jié)點(diǎn)接收檢索門(mén)戶模塊發(fā)送的檢索類型、檢索關(guān)鍵詞和檢索文件類型;計(jì)算索引分片數(shù)目;解析檢索關(guān)鍵詞,并使用IKAnalyser分詞,生成查詢?nèi)蝿?wù)并提交到各ElasticSerach集群從節(jié)點(diǎn);各ElasticSerach集群從節(jié)點(diǎn)根據(jù)文件類型對(duì)索引分片進(jìn)行過(guò)濾,并判斷檢索類型,如果為模糊檢索,根據(jù)關(guān)鍵詞類型在索引分片中查找匹配key:關(guān)鍵詞類型為文件名稱匹配key為filename,關(guān)鍵詞類型為文件大小匹配key為filesize,關(guān)鍵詞類型為文件類型匹配key為filetype,關(guān)鍵詞類型為上傳作者匹配key為fileauthor,關(guān)鍵詞類型為索引創(chuàng)建時(shí)間匹配key為indextime,根據(jù)分詞后的關(guān)鍵詞與匹配key對(duì)應(yīng)的value進(jìn)行模糊匹配,得到匹配value及其對(duì)應(yīng)的文件ID,生成檢索結(jié)果即文件ID對(duì)應(yīng)的全部value內(nèi)容發(fā)送給檢索門(mén)戶模塊,并以分頁(yè)的形式將檢索結(jié)果發(fā)送給web頁(yè)面顯示;如果為全文檢索,根據(jù)分詞后的關(guān)鍵詞與索引分片中key為file對(duì)應(yīng)的value進(jìn)行模糊匹配,得到匹配value對(duì)應(yīng)的文件ID,生成檢索結(jié)果即文件ID對(duì)應(yīng)的全部value內(nèi)容發(fā)送給檢索門(mén)戶模塊,并以分頁(yè)的形式將檢索結(jié)果發(fā)送給web頁(yè)面顯示;所述檢索結(jié)果包括:文件名稱、文件大小、文件類型、上傳作者、索引創(chuàng)建時(shí)間或相關(guān)度評(píng)分;其中,當(dāng)是否索引文件類型字段為是時(shí),檢索結(jié)果中包含文件類型,當(dāng)是否索引上傳作者字段為是時(shí),檢索結(jié)果中包含上傳作者,當(dāng)是否索引文件大小字段為是時(shí),檢索結(jié)果中包含文件大小。

在高級(jí)檢索階段,ElasticSerach集群主節(jié)點(diǎn)接收檢索門(mén)戶模塊發(fā)送的檢索條件,計(jì)算索引備份切片數(shù)目;解析檢索條件,生成查詢?nèi)蝿?wù)即檢索條件組合:若已知關(guān)鍵詞非空,對(duì)已知關(guān)鍵詞中的檢索關(guān)鍵詞進(jìn)行邏輯與進(jìn)行組合;若文件類型非空,對(duì)文件類型按照邏輯或進(jìn)行組合;使用IKAnalyser對(duì)檢索條件組合進(jìn)行分詞,并將分詞后的檢索條件組合發(fā)送給各ElasticSerach集群從節(jié)點(diǎn);各ElasticSerach集群從節(jié)點(diǎn)執(zhí)行如下操作:a按照分詞后的檢索條件組合與各索引分片中value進(jìn)行模糊匹配,得到匹配結(jié)果即匹配value;b判斷檢索條件中是否有未知關(guān)鍵詞,有,對(duì)匹配結(jié)果按照未知關(guān)鍵詞進(jìn)行過(guò)濾后,執(zhí)行c;否則,執(zhí)行c;c判斷檢索條件中是否有索引創(chuàng)建時(shí)間,有,對(duì)匹配結(jié)果按照索引創(chuàng)建時(shí)間進(jìn)行過(guò)濾后,并執(zhí)行d;否則,執(zhí)行d;d將檢索結(jié)果即最終匹配value對(duì)應(yīng)的文件ID的全部value發(fā)送給檢索門(mén)戶模塊,并以分頁(yè)的形式將檢索結(jié)果發(fā)送到web頁(yè)面顯示,檢索結(jié)果包含:文件名稱、文件類型、上傳作者、索引創(chuàng)建時(shí)間或相關(guān)度評(píng)分即匹配結(jié)果所占索引個(gè)數(shù)的百分比。

MongoDB數(shù)據(jù)庫(kù),用于接收系統(tǒng)配置模塊發(fā)送的索引配置表并存儲(chǔ);接收文件管理模塊發(fā)送的文件類型,并根據(jù)索引配置表將該文件類型對(duì)應(yīng)的存儲(chǔ)位置發(fā)送給文件管理模塊;接收文件管理模塊發(fā)送的文件記錄并存儲(chǔ);接收文件管理模塊發(fā)送的文件信息,判斷是否同時(shí)有文件名稱和文件類型,是,首先根據(jù)文件名稱與文件記錄進(jìn)行模糊匹配,然后根據(jù)文件類型進(jìn)行精確匹配,否則,根據(jù)文件名稱與文件記錄進(jìn)行模糊匹配,得到匹配文件記錄發(fā)送給文件管理模塊;接收索引管理模塊發(fā)送的文件信息,判斷是否同時(shí)有文件名稱和文件類型,是,首先根據(jù)文件名稱與文件記錄進(jìn)行模糊匹配,然后根據(jù)的文件類型進(jìn)行精確匹配,最后按照索引版本號(hào)為0進(jìn)行過(guò)濾,將匹配文件記錄發(fā)送給索引管理模塊;否則,根據(jù)文件名稱與文件記錄進(jìn)行模糊匹配,并按照索引版本號(hào)為0對(duì)匹配結(jié)果進(jìn)行過(guò)濾,將匹配文件記錄發(fā)送給索引管理模塊;接收Spark集群主節(jié)點(diǎn)發(fā)送的文件ID,并與文件記錄進(jìn)行模糊匹配,提取匹配文件記錄中文件類型與索引配置表匹配,將匹配文件記錄和匹配索引配置表發(fā)送給Spark集群主節(jié)點(diǎn);接收索引管理模塊發(fā)送的索引記錄,判斷是否有相同文件ID的索引記錄,有,更新索引記錄并將該文件ID對(duì)應(yīng)的文件記錄中的索引版本號(hào)加1,否則,將索引記錄存儲(chǔ);接收索引管理模塊發(fā)送的查詢條件在索引記錄中進(jìn)行模糊匹配,將匹配索引記錄發(fā)送給索引管理模塊;接收索引管理模塊發(fā)送的文件ID和刪除索引記錄消息,將文件ID對(duì)應(yīng)的索引記錄刪除,并將該文件ID對(duì)應(yīng)的文件記錄中索引版本號(hào)重置為0;接收檢索門(mén)戶模塊發(fā)送的檢索日志并存儲(chǔ)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
<li id="qvdde"></li>
<tfoot id="qvdde"><form id="qvdde"><th id="qvdde"></th></form></tfoot>
    <sup id="qvdde"></sup>
    <li id="qvdde"><form id="qvdde"></form></li>