專利名稱:一種從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到搜索引擎,特別是一種從簡(jiǎn)歷庫(kù)中快速檢索出簡(jiǎn)歷文件的方法搜索引擎。
背景技術(shù):
在招聘行業(yè)中,大部分網(wǎng)站都采用數(shù)據(jù)庫(kù)搜索的方式來(lái)實(shí)現(xiàn)簡(jiǎn)歷數(shù)據(jù)的檢索。這種數(shù)據(jù)庫(kù)搜索技術(shù)適用于簡(jiǎn)歷數(shù)據(jù)量較小的網(wǎng)站,但是一旦簡(jiǎn)歷數(shù)量巨大且增長(zhǎng)過(guò)快,例如達(dá)到三千萬(wàn)條的數(shù)量,使用普通的數(shù)據(jù)庫(kù)技術(shù)進(jìn)行簡(jiǎn)歷搜索時(shí),在巨量的簡(jiǎn)歷數(shù)據(jù)面前, 其檢索性能就非常差。特別是在搜索關(guān)鍵字時(shí),處于web客戶端的用戶響應(yīng)速度很慢,需要幾秒到幾十秒,甚至出現(xiàn)部分關(guān)鍵字搜索無(wú)法獲得搜索結(jié)果。針對(duì)這種情形,作為簡(jiǎn)歷搜索者的企事業(yè)單位用戶常常投訴簡(jiǎn)歷搜索速度過(guò)慢,搜索效果太差。在目前的技術(shù)條件下,由于數(shù)據(jù)庫(kù)的簡(jiǎn)歷數(shù)量非常大,很難直接通過(guò)硬件擴(kuò)展的方式來(lái)大幅度提高系統(tǒng)性能,并且對(duì)硬件擴(kuò)展和升級(jí)的成本也較高??偨Y(jié)現(xiàn)有技術(shù)存在的問(wèn)題主要在于兩點(diǎn)第一是企業(yè)用戶簡(jiǎn)歷庫(kù)搜索簡(jiǎn)歷時(shí)搜索速度過(guò)慢;第二是搜索結(jié)果不完整,很多搜索引擎只返回部分結(jié)果,并且搜索引擎本身使用詞庫(kù)的方式來(lái)建立索引,不能保證簡(jiǎn)歷庫(kù)中的所有數(shù)據(jù)都能夠被有效檢索。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)存在的不足,提供一種新的從巨量簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法。本發(fā)明的搜索方法要能夠?qū)崿F(xiàn)簡(jiǎn)歷數(shù)據(jù)庫(kù)內(nèi)的所有簡(jiǎn)歷都能夠快速有效地被檢索出來(lái),在保證檢索準(zhǔn)確性的情況下要能大幅提高檢索速度。為了達(dá)到上述發(fā)明目的,本發(fā)明提供的技術(shù)方案如下一種從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法,其特征在于,該方法是在簡(jiǎn)歷數(shù)據(jù)庫(kù)與web 服務(wù)器之間設(shè)置一個(gè)簡(jiǎn)歷搜索引擎,利用該簡(jiǎn)歷搜索引擎將簡(jiǎn)歷的全文關(guān)鍵字進(jìn)行快速索引,通過(guò)按字索引的方式使簡(jiǎn)歷數(shù)據(jù)庫(kù)中存在的簡(jiǎn)歷數(shù)據(jù)能夠快速有效地被檢索出并在 web服務(wù)器中呈現(xiàn)出來(lái)。上述從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法主要包括有簡(jiǎn)歷索引生成階段和簡(jiǎn)歷索引搜索服務(wù)階段在簡(jiǎn)歷索引生成階段第一步,將簡(jiǎn)歷數(shù)據(jù)庫(kù)中的簡(jiǎn)歷按照更新時(shí)間進(jìn)行降序排列,以降序讀取新增、修改、邏輯刪除的簡(jiǎn)歷數(shù)據(jù);第二步,掃描每份簡(jiǎn)歷在數(shù)據(jù)庫(kù)中的索引字段,按照月份生成索引文件,索引文件包括文件頭段落、精確搜索段落、字索引段落和詳細(xì)位置信息段落,每天更新生成當(dāng)月的索引文件,該索引文件通過(guò)復(fù)制的方式更新數(shù)據(jù)至索引服務(wù)器上;在簡(jiǎn)歷索引搜索服務(wù)階段第三步,所述的索引服務(wù)器為多線程模塊,其包括有主線程、工作線程和監(jiān)控線程,主線程通過(guò)套接字在指定端口 8妨4監(jiān)聽(tīng)搜索請(qǐng)求,若有搜索請(qǐng)求則將其轉(zhuǎn)給工作線程處理;第四步,工作線程接收Web客戶端的搜索請(qǐng)求并將搜索請(qǐng)求信息解析,如果不包含關(guān)鍵字,直接進(jìn)行精確搜索段落的判斷,如果包含關(guān)鍵字,則通過(guò)字索引段落,找到每個(gè)關(guān)鍵字的詳細(xì)位置信息的起始位置,判斷是否符合搜索請(qǐng)求,如果關(guān)鍵字滿足搜索請(qǐng)求,則繼續(xù)判斷精確搜索段落是否滿足搜索請(qǐng)求,如果都滿足搜索請(qǐng)求,則將簡(jiǎn)歷ID放入搜索結(jié)果中,搜索完成后返回客戶端;第五步,監(jiān)控線程定時(shí)掃描文件更新,若索引文件正在更新,則將當(dāng)前服務(wù)器的搜索請(qǐng)求轉(zhuǎn)移到備份服務(wù)器上搜索。在本發(fā)明的從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中,所述第二步的索引文件中文件頭段落包含的統(tǒng)計(jì)信息包括精確搜索段落,字索引段落,詳細(xì)位置信息段落在文件中的起始位置,每個(gè)節(jié)點(diǎn)的大小,以及節(jié)點(diǎn)的數(shù)量;精確搜索段落包括自增長(zhǎng)的內(nèi)部ID,數(shù)據(jù)庫(kù)的簡(jiǎn)歷ID,居住地,學(xué)歷,性別,工作年限,簡(jiǎn)歷更新時(shí)間以及狀態(tài)信息;字索引段落包括漢字和英文信息,每個(gè)漢字為一個(gè)節(jié)點(diǎn),每個(gè)英文單詞為一個(gè)單獨(dú)節(jié)點(diǎn);詳細(xì)位置信息段落記錄字的內(nèi)部ID、字段以及位置信息。在本發(fā)明的從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中,所述第四步中查找關(guān)鍵字的詳細(xì)位置信息時(shí),對(duì)比每個(gè)關(guān)鍵字的前后位置信息,若所有關(guān)鍵字都滿足位置信息,則該條記錄滿足關(guān)鍵字搜索條件,如果同時(shí)滿足精確搜索條件,就可以提取該簡(jiǎn)歷ID至搜索結(jié)果集?;谏鲜黾夹g(shù)方案,本發(fā)明的從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法與現(xiàn)有技術(shù)相比具有如下技術(shù)優(yōu)點(diǎn)1.本發(fā)明的簡(jiǎn)歷庫(kù)搜索方法可以實(shí)現(xiàn)簡(jiǎn)歷庫(kù)內(nèi)所有簡(jiǎn)歷數(shù)據(jù)的全文關(guān)鍵字的快速搜索,并且按字索引,從而保證了簡(jiǎn)歷數(shù)據(jù)庫(kù)內(nèi)存在的數(shù)據(jù)都能夠有效地被檢索出來(lái)。2.企業(yè)用戶利用本發(fā)明的搜索引擎可以從包含大量簡(jiǎn)歷的數(shù)據(jù)庫(kù)中快速準(zhǔn)確地進(jìn)行關(guān)鍵字檢索以及部分信息的精確檢索,從而解決了搜索速度慢的問(wèn)題,使得企業(yè)用戶能夠快速的找到需要的簡(jiǎn)歷文件。
圖1是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法的總體思路示意圖。圖2是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中簡(jiǎn)歷索引生成階段的流程示意圖。圖3是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中簡(jiǎn)歷索引搜索服務(wù)階段的流程示意圖。圖4是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中詞語(yǔ)搜索過(guò)程的示意圖。圖5是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中字搜索過(guò)程的示意圖。
具體實(shí)施例方式下面我們結(jié)合附圖和具體的實(shí)施例來(lái)對(duì)本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法做進(jìn)一步的詳細(xì)闡述,以求更為清楚明了地理解其含義和過(guò)程算法,但不能以此來(lái)限制本發(fā)明的保護(hù)范圍。
先請(qǐng)看圖1,圖1是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法的總體思路示意圖。由圖可知,本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法是在簡(jiǎn)歷數(shù)據(jù)庫(kù)與web服務(wù)器之間設(shè)置一個(gè)簡(jiǎn)歷搜索引擎,利用該簡(jiǎn)歷搜索引擎將簡(jiǎn)歷的全文關(guān)鍵字進(jìn)行快速索引,通過(guò)按字索引的方式使簡(jiǎn)歷數(shù)據(jù)庫(kù)中存在的簡(jiǎn)歷數(shù)據(jù)能夠快速有效地被檢索出來(lái),并且在web服務(wù)器中呈現(xiàn)給用戶。而這里的簡(jiǎn)歷搜索引擎主要包括了兩個(gè)部分,即索引生成器和索引服務(wù)器,它們各自相對(duì)應(yīng)的處理階段為索引生成階段和索引搜索服務(wù)階段。簡(jiǎn)歷搜索引擎中的索引生成器通過(guò)開(kāi)放式數(shù)據(jù)庫(kù)互聯(lián)ODBC連接至簡(jiǎn)歷數(shù)據(jù)庫(kù)中,而簡(jiǎn)歷生成器生成的索引文件會(huì)復(fù)制到索引服務(wù)器中,而索引服務(wù)器則通過(guò)套接字連接到Web服務(wù)器中。上述的簡(jiǎn)歷搜索引擎中包括的索引生成器用于從簡(jiǎn)歷數(shù)據(jù)庫(kù)中讀取簡(jiǎn)歷數(shù)據(jù),將精確搜索字段和關(guān)鍵字字段信息生成符合搜索規(guī)范的數(shù)據(jù)文件,并分發(fā)到多臺(tái)索引服務(wù)器中。這里的索引服務(wù)器根據(jù)Web服務(wù)器提供的搜索條件,快速地從索引文件中查詢到符合條件的簡(jiǎn)歷數(shù)據(jù),然后返回給Web服務(wù)器進(jìn)行顯示。索引生成器在從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中由索引生成階段完成其功能,具體流程如圖2所示,圖2是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中簡(jiǎn)歷索引生成階段的流程示意圖。由圖可知,該簡(jiǎn)歷索引生成階段的處理流程如下這里的簡(jiǎn)歷數(shù)據(jù)庫(kù)為SQL Server 2000數(shù)據(jù)庫(kù),該階段就是讀取簡(jiǎn)歷數(shù)據(jù)庫(kù)中存儲(chǔ)的簡(jiǎn)歷數(shù)據(jù),按照月份生成索引文件,正式的索引文件結(jié)構(gòu)分為四個(gè)段落1.文件頭段落,記錄每個(gè)段落的起始位置,數(shù)量,節(jié)點(diǎn)大小,以及統(tǒng)計(jì)信息。2.精確搜索段落,包括自增長(zhǎng)的內(nèi)部ID、數(shù)據(jù)庫(kù)的簡(jiǎn)歷ID、居住地、學(xué)歷、性別、工作年限、簡(jiǎn)歷更新時(shí)間、狀態(tài)需要精確搜索的字段信息,該段落使用順序結(jié)構(gòu)存儲(chǔ)。3.字索引段落,使用B+樹(shù)結(jié)構(gòu)存儲(chǔ)索引信息,包括關(guān)鍵字、起始位置,記錄數(shù)量信肩、ο4.詳細(xì)位置信息段落,使用順序結(jié)構(gòu)存儲(chǔ),存放索引的內(nèi)部ID,字段編號(hào),關(guān)鍵字位置等信息,包括內(nèi)部IDG個(gè)字節(jié))、字段編號(hào)(1個(gè)字節(jié))以及位置O個(gè)字節(jié))信息,每個(gè)字段內(nèi)超過(guò)30000的數(shù)據(jù)將被忽略。所述的索引創(chuàng)建過(guò)程如下1.預(yù)留內(nèi)存緩沖區(qū),用于存儲(chǔ)生成索引過(guò)程中產(chǎn)生的臨時(shí)索引數(shù)據(jù),包括關(guān)鍵字、 內(nèi)部ID、字段編號(hào)以及位置信息。2.連接簡(jiǎn)歷數(shù)據(jù)庫(kù),按照簡(jiǎn)歷更新時(shí)間降序,簡(jiǎn)歷ID降序獲取簡(jiǎn)歷數(shù)據(jù)結(jié)果集, 包括精確搜索字段和關(guān)鍵字字段,精確搜索字段包括簡(jiǎn)歷ID,居住地,學(xué)歷,性別,工作年限,簡(jiǎn)歷更新時(shí)間,狀態(tài),關(guān)鍵字字段包括工作經(jīng)驗(yàn),教育經(jīng)驗(yàn),項(xiàng)目經(jīng)驗(yàn)。3.開(kāi)始循環(huán)結(jié)果集數(shù)據(jù),定義自增長(zhǎng)的ID,從0開(kāi)始計(jì)數(shù),獲取簡(jiǎn)歷ID,居住地, 學(xué)歷,性別,工作年限,簡(jiǎn)歷更新時(shí)間,狀態(tài)等精確搜索字段,這些信息保存到精確搜索段落中,判斷簡(jiǎn)歷更新時(shí)間,如果和前面記錄屬于不同的月份,則創(chuàng)建新的索引文件。4.判斷簡(jiǎn)歷更新時(shí)間是否大于刪除日期,如果大于刪除日期,則寫(xiě)刪除文件。索引生成程序每天凌晨運(yùn)行一次,刪除日期為前一天,刪除文件中包含的數(shù)據(jù)為當(dāng)天新增或者修改的記錄,運(yùn)行完成后自動(dòng)更新刪除日期為當(dāng)天。5.循環(huán)每一個(gè)關(guān)鍵字字段,循環(huán)每一個(gè)關(guān)鍵字,填充關(guān)鍵字,內(nèi)部ID,字段編號(hào), 位置信息到緩沖區(qū)中,如果緩沖區(qū)滿,則調(diào)用保存數(shù)據(jù)模塊保存緩沖區(qū)數(shù)據(jù),否則繼續(xù)填充數(shù)據(jù),直到所有字段都被處理。6.保存數(shù)據(jù)模塊將緩沖區(qū)數(shù)據(jù)進(jìn)行快速排序,排序結(jié)果按照關(guān)鍵字+內(nèi)部ID+字段+位置順序有序排列,即相同的字都是在一起的,循環(huán)整個(gè)緩沖區(qū),將字信息插入到臨時(shí)索引緩沖區(qū)和索引緩沖區(qū),內(nèi)部ID+字段+位置結(jié)構(gòu)順序?qū)懭氲脚R時(shí)索引文件中。臨時(shí)索引緩沖區(qū)中關(guān)鍵字+起始位置字段唯一,按照順序以B+樹(shù)結(jié)構(gòu)存儲(chǔ),索引緩沖區(qū)中關(guān)鍵字唯一,以B+樹(shù)結(jié)構(gòu)存儲(chǔ),保存完成后,清空緩沖區(qū)。7.跳轉(zhuǎn)到第3步繼續(xù)處理下一條簡(jiǎn)歷,直到所有簡(jiǎn)歷都被處理。處理完成后,調(diào)用保存數(shù)據(jù)模塊保存最后數(shù)據(jù),更新刪除文件的開(kāi)始4個(gè)字節(jié)的內(nèi)容(long數(shù)據(jù)類型)為刪除總數(shù)。8.循環(huán)讀取臨時(shí)索引緩沖區(qū)的節(jié)點(diǎn)信息,如果節(jié)點(diǎn)的字信息為不同的字,則更新索引緩沖區(qū)的起始位置,節(jié)點(diǎn)數(shù)量信息,保存臨時(shí)緩沖區(qū)的數(shù)據(jù)到正式索引文件中,如果節(jié)點(diǎn)的字相同,繼續(xù)從臨時(shí)索引文件中復(fù)制數(shù)據(jù),直到所有節(jié)點(diǎn)的數(shù)據(jù)都被處理,最后將索引緩沖區(qū)的數(shù)據(jù)寫(xiě)入正式索引文件,寫(xiě)入文件頭段落的統(tǒng)計(jì)信息,刪除臨時(shí)索引文件。9.讀取分發(fā)列表,將正式索引文件和刪除文件分發(fā)到多臺(tái)索引服務(wù)器上,并將配置文件中的內(nèi)容從0改為1,表示索引文件已經(jīng)完成更新。簡(jiǎn)歷搜索引擎中的索引服務(wù)器由索引搜索服務(wù)階段完成其功能,這里的索引服務(wù)階段存在多個(gè)線程程序,其作用是啟動(dòng)套接字在指定端口監(jiān)聽(tīng)客戶端的搜索請(qǐng)求,如果檢測(cè)到搜索請(qǐng)求,則進(jìn)行快速進(jìn)行解析,數(shù)據(jù)讀取,數(shù)據(jù)匹配,通過(guò)高效的檢索,將符合條件的簡(jiǎn)歷ID結(jié)果集返回到Web客戶端。其具體的處理流程如圖3所示,圖3是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中簡(jiǎn)歷索引搜索服務(wù)階段的流程示意圖。由圖可知,簡(jiǎn)歷索引搜索服務(wù)階段的處理流程如下1.讀取配置文件信息,包括AWE內(nèi)存大小,裝載的索引文件時(shí)間范圍,工作線程數(shù)量等配置信息。簡(jiǎn)歷索引服務(wù)器使用了地址窗口化擴(kuò)展插件(Address Windowing Extensions,簡(jiǎn)稱AWE),這樣在32位的Windows操作系統(tǒng)上可以使用4G以上的物理內(nèi)存, 將索引文件常駐內(nèi)存來(lái)提高搜索效率。2.裝載索引數(shù)據(jù)到內(nèi)存中。將文件頭段落,精確搜索段落,字索引段落數(shù)據(jù)裝載到進(jìn)程空間內(nèi)的內(nèi)存中,將索引文件中數(shù)據(jù)量最大的詳細(xì)信息段落裝載到AWE內(nèi)存中,以提高搜索效率。3.啟動(dòng)監(jiān)控線程,用于監(jiān)控索引文件更新,啟動(dòng)工作線程,用于提供搜索服務(wù)。4.主線程在指定端口 8妨4監(jiān)聽(tīng)客戶端搜索請(qǐng)求。5.檢測(cè)是否有搜索請(qǐng)求,如果檢測(cè)到搜索請(qǐng)求,則將套接字接收下來(lái),將主線程阻塞,工作線程將接收套接字復(fù)制,并喚醒主線程繼續(xù)接收其他搜索請(qǐng)求。6.工作線程判斷本機(jī)是否出于更新索引狀態(tài),如果當(dāng)前機(jī)器處于更新?tīng)顟B(tài),將搜索請(qǐng)求轉(zhuǎn)給備份服務(wù)器進(jìn)行處理,通過(guò)套接字連接備份服務(wù)器,備份服務(wù)器搜索完成后將數(shù)據(jù)返回給本機(jī),本機(jī)將搜索結(jié)果轉(zhuǎn)發(fā)給Web客戶端。7.當(dāng)前工作線程開(kāi)始接收客戶端詳細(xì)的搜索請(qǐng)求,并將編碼的搜索請(qǐng)求轉(zhuǎn)化為內(nèi)部的搜索關(guān)鍵字結(jié)構(gòu),如果傳入的數(shù)據(jù)不符合數(shù)據(jù)規(guī)范,則直接返回0給Web客戶端。索引文件是按照簡(jiǎn)歷更新日期降序排列,搜索從最新的索引文件開(kāi)始,判斷索引文件日期是否小于搜索的開(kāi)始日期,如果小于,則剩下的索引文件中必然不包含有效數(shù)據(jù),無(wú)需繼續(xù)搜索,否則取出當(dāng)前索引文件的信息,調(diào)用詞語(yǔ)搜索算法進(jìn)行搜索,循環(huán)所有的索引文件,最后返回搜索要求的簡(jiǎn)歷ID的列表給Web客戶端。8.監(jiān)控線程每隔一段時(shí)間,通常為5秒掃描一次索引更新目錄下的配置文件,判斷索引文件是否更新。如果發(fā)現(xiàn)索引文件已經(jīng)更新,則本服務(wù)器接收到的搜索請(qǐng)求都轉(zhuǎn)給備份服務(wù)器進(jìn)行搜索,本服務(wù)器開(kāi)始進(jìn)行數(shù)據(jù)更新,重新裝載最新的索引文件,包括文件頭段落,精確搜索段落,字索引段落以及位置索引段落,以前月份的索引文件則只進(jìn)行精確搜索段落的更新,將在刪除文件中存在的簡(jiǎn)歷ID的狀態(tài)從1改為0,這樣表示在這個(gè)索引文件中這份簡(jiǎn)歷已經(jīng)無(wú)效,在搜索過(guò)程中狀態(tài)為0的簡(jiǎn)歷將會(huì)被認(rèn)為不滿足精確搜索條件,這樣的處理結(jié)果保證搜索結(jié)果不會(huì)出現(xiàn)數(shù)據(jù)重復(fù)。在簡(jiǎn)歷索引搜索服務(wù)階段的處理流程中涉及到了詞語(yǔ)搜索,其具體的流程如圖4 所示,圖4是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中詞語(yǔ)搜索過(guò)程的示意圖。由圖可知, 詞語(yǔ)搜索算法的處理流程如下1.判斷是否存在關(guān)鍵字。如果存在關(guān)鍵字,跳轉(zhuǎn)到步驟3,否則繼續(xù)執(zhí)行步驟2。2.直接進(jìn)行精確搜索部分字段的過(guò)濾,符合搜索條件的記錄,放入結(jié)果集中,不符合搜索條件,繼續(xù)進(jìn)行搜索,遍歷整個(gè)精確搜索部分或者搜索結(jié)果數(shù)量已經(jīng)達(dá)到最大的返回?cái)?shù)量。3.解析關(guān)鍵字,從字索引段落的B+樹(shù)結(jié)構(gòu)中查找每一個(gè)字的起始位置以及數(shù)量信息,并從索引文件中或者AWE內(nèi)存中讀取詳細(xì)位置信息的部分或者全部數(shù)據(jù)到內(nèi)存中。4.判斷詞語(yǔ)的數(shù)量,如果包含多于一個(gè)詞語(yǔ),則跳轉(zhuǎn)到步驟5,否則調(diào)用字搜索算法搜索當(dāng)前詞語(yǔ),如果存在滿足條件的記錄,取出精確搜索部分信息進(jìn)行過(guò)濾,如果滿足條件,則將簡(jiǎn)歷ID放入結(jié)果集中,繼續(xù)進(jìn)行搜索,直到遍歷所有字的記錄或者搜索結(jié)果數(shù)量達(dá)到最大的返回?cái)?shù)量。5.關(guān)鍵字中包含多個(gè)詞語(yǔ),比較前后兩個(gè)詞語(yǔ)的內(nèi)部ID,如果前一詞語(yǔ)的內(nèi)部ID 小于后一詞語(yǔ)的內(nèi)部ID,則移動(dòng)前一詞語(yǔ),否則移動(dòng)后一詞語(yǔ),直到前后兩個(gè)詞語(yǔ)的內(nèi)部 ID相等或者有詞語(yǔ)數(shù)據(jù)已經(jīng)全部讀取完成。6.判斷在前面移動(dòng)的過(guò)程中,是否移動(dòng)了前一詞語(yǔ)并且前一詞語(yǔ)不是第一個(gè)詞語(yǔ),如果移動(dòng)了,則需要回溯詞語(yǔ)指針,將前一詞語(yǔ)賦給后一詞語(yǔ),前二詞語(yǔ)賦給前一詞語(yǔ), 重新比較前一詞語(yǔ)和后一詞語(yǔ),直到前后兩個(gè)詞語(yǔ)相等并且前一詞語(yǔ)沒(méi)有移動(dòng)或者前一詞語(yǔ)為第一個(gè)詞語(yǔ)。這樣不斷循環(huán),直到后一詞語(yǔ)為最后一個(gè)詞語(yǔ)為止或者有詞語(yǔ)數(shù)據(jù)已經(jīng)全部讀取完成,如果有詞語(yǔ)數(shù)據(jù)已經(jīng)全部讀取完成,則置搜索結(jié)束標(biāo)記。7.判斷是否找到搜索結(jié)果,如果找到,則進(jìn)行精確字段信息過(guò)濾,如果滿足條件, 則將簡(jiǎn)歷ID放入結(jié)果集中,如果搜索的結(jié)果數(shù)量已經(jīng)達(dá)到最大的返回?cái)?shù)量,則置搜索結(jié)束標(biāo)記。8.判斷是否搜索結(jié)束,如果有詞語(yǔ)的數(shù)據(jù)已經(jīng)全部讀取完成或者搜索結(jié)果數(shù)量已經(jīng)達(dá)到最大的返回?cái)?shù)量,則搜索結(jié)束,繼續(xù)查找不可能在找到符合條件的結(jié)果,執(zhí)行步驟9, 否則返回步驟5,繼續(xù)搜索。9.將搜索到簡(jiǎn)歷ID列表返回,本索引文件搜索結(jié)束。在上述的詞語(yǔ)搜索中涉及到了字搜索過(guò)程,如圖5所示,圖5是本發(fā)明從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法中字搜索過(guò)程的示意圖。由圖可知,其具體的處理流程如下
1.判斷當(dāng)前詞語(yǔ)是否只包含一個(gè)字,如果包含多余一個(gè)字,執(zhí)行步驟3。2.移動(dòng)當(dāng)前字到下一條記錄(第一次除外)。如果當(dāng)前已經(jīng)讀取的內(nèi)存塊中包含記錄,直接移動(dòng)到下一個(gè)記錄即可,如果當(dāng)前內(nèi)存塊中已經(jīng)讀取完成,則需要從AWE內(nèi)存中或者從索引文件中讀取下一塊的信息到內(nèi)存中,如果已經(jīng)全部讀取完成,則返回i^alse,否則讀取下一記錄,記錄內(nèi)部ID信息,返回True。3.當(dāng)前詞語(yǔ)中如果包含多個(gè)字,比較前后字的位置信息,包括內(nèi)部ID,字段,以及位置信息,符合條件的詞語(yǔ)中前后關(guān)鍵字位置差1,這樣將前一關(guān)鍵字的位置信息加1后和后一關(guān)鍵字進(jìn)行比較,如果前一關(guān)鍵字小于后一關(guān)鍵字,則移動(dòng)前一關(guān)鍵字,否則移動(dòng)后一關(guān)鍵字,直到前后兩個(gè)關(guān)鍵字的內(nèi)部ID,字段,位置信息滿足要求或者有關(guān)鍵字的數(shù)據(jù)已經(jīng)全部讀取完成。4.判斷在前面移動(dòng)的過(guò)程中,是否移動(dòng)了前一關(guān)鍵字并且前一關(guān)鍵字不是第一個(gè)關(guān)鍵字,如果移動(dòng)了,則需要回溯關(guān)鍵字指針,將前一關(guān)鍵字賦給后一關(guān)鍵字,前二關(guān)鍵字賦給前一關(guān)鍵字,重新比較前一關(guān)鍵字和后一關(guān)鍵字,直到前后兩個(gè)關(guān)鍵字位置信息滿足要求并且前一關(guān)鍵字沒(méi)有移動(dòng)或者前一關(guān)鍵字為第一個(gè)關(guān)鍵字。這樣不斷循環(huán),直到后一關(guān)鍵字為最后一個(gè)關(guān)鍵字為止或者有關(guān)鍵字?jǐn)?shù)據(jù)已經(jīng)全部讀取完成,如果有關(guān)鍵字?jǐn)?shù)據(jù)已經(jīng)全部讀取完成,返回i^alse。5.記錄滿足條件的內(nèi)部ID,返回true。本發(fā)明的搜索方法創(chuàng)造性地提出了在簡(jiǎn)歷數(shù)據(jù)庫(kù)和搜索客戶端之間設(shè)置了搜索引擎,大幅度地提高了從客戶端檢索簡(jiǎn)歷的速度,同時(shí)也將簡(jiǎn)歷檢索的精度大大提高。
權(quán)利要求
1.一種從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法,其特征在于,該方法是在簡(jiǎn)歷數(shù)據(jù)庫(kù)與web 服務(wù)器之間設(shè)置一個(gè)簡(jiǎn)歷搜索引擎,利用該簡(jiǎn)歷搜索引擎將簡(jiǎn)歷的全文關(guān)鍵字進(jìn)行快速索弓丨,通過(guò)按字索引的方式使簡(jiǎn)歷數(shù)據(jù)庫(kù)中存在的簡(jiǎn)歷數(shù)據(jù)能夠快速有效地被檢索出并在 web服務(wù)器中呈現(xiàn)出來(lái)。
2.根據(jù)權(quán)利要求1所述的一種從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法,其特征在于,該方法包括簡(jiǎn)歷索引生成階段和簡(jiǎn)歷索引搜索服務(wù)階段在簡(jiǎn)歷索引生成階段第一步,將簡(jiǎn)歷數(shù)據(jù)庫(kù)中的簡(jiǎn)歷按照更新時(shí)間進(jìn)行降序排列,以降序讀取新增、修改、 邏輯刪除的簡(jiǎn)歷數(shù)據(jù);第二步,掃描每份簡(jiǎn)歷在數(shù)據(jù)庫(kù)中的索引字段,按照月份生成索引文件,索引文件包括文件頭段落、精確搜索段落、字索引段落和詳細(xì)位置信息段落,每天更新生成當(dāng)月的索引文件,該索引文件通過(guò)復(fù)制的方式更新數(shù)據(jù)至索引服務(wù)器上;簡(jiǎn)歷索引搜索服務(wù)階段第三步,所述的索引服務(wù)器為多線程模塊,其包括有主線程、工作線程和監(jiān)控線程,主線程通過(guò)套接字在指定端口 8妨4監(jiān)聽(tīng)搜索請(qǐng)求,若有搜索請(qǐng)求則將其轉(zhuǎn)給工作線程處理;第四步,工作線程接收Web客戶端的搜索請(qǐng)求并將搜索請(qǐng)求信息解析,如果不包含關(guān)鍵字,直接進(jìn)行精確搜索段落的檢索,如果包含關(guān)鍵字,則通過(guò)字索引段落,快速找到每個(gè)關(guān)鍵字的詳細(xì)位置信息的起始位置,并判斷關(guān)鍵字是否符合搜索請(qǐng)求,如果關(guān)鍵字滿足搜索請(qǐng)求,則繼續(xù)判斷精確搜索段落是否滿足搜索請(qǐng)求,如果都滿足搜索請(qǐng)求,則將簡(jiǎn)歷ID 放入搜索結(jié)果中,搜索完成后返回Web客戶端;第五步,監(jiān)控線程定時(shí)掃描文件更新,若索引文件正在更新,則將當(dāng)前服務(wù)器的搜索請(qǐng)求轉(zhuǎn)移到備份服務(wù)器上搜索。
3.落在文件中的起始位置,節(jié)點(diǎn)的大小,以及節(jié)點(diǎn)的數(shù)量;精確搜索段落包括自增長(zhǎng)的內(nèi)部ID,數(shù)據(jù)庫(kù)的簡(jiǎn)歷ID,居住地,學(xué)歷,性別,工作年限,簡(jiǎn)歷更新時(shí)間以及狀態(tài)信息;字索引段落包括漢字和英文信息,每個(gè)漢字為一個(gè)節(jié)點(diǎn),每個(gè)英文單詞為一個(gè)單獨(dú)節(jié)點(diǎn);詳細(xì)位置信息段落記錄字的內(nèi)部ID、字段以及位置信息。
4.根據(jù)權(quán)利要求2所述的一種從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法,其特征在于,所述第四步中查找關(guān)鍵字的詳細(xì)位置信息時(shí),對(duì)比每個(gè)關(guān)鍵字的前后位置信息,若所有關(guān)鍵字都滿足位置信息,則該條記錄滿足關(guān)鍵字搜索條件,如果同時(shí)滿足精確搜索條件,就可以提取該簡(jiǎn)歷ID至搜索結(jié)果集。
全文摘要
本發(fā)明涉及一種從簡(jiǎn)歷庫(kù)中快速檢索簡(jiǎn)歷的方法,該方法是在簡(jiǎn)歷數(shù)據(jù)庫(kù)與web服務(wù)器之間設(shè)置一個(gè)簡(jiǎn)歷搜索引擎,利用該簡(jiǎn)歷搜索引擎將簡(jiǎn)歷的全文關(guān)鍵字進(jìn)行快速索引,通過(guò)按字索引的方式使簡(jiǎn)歷數(shù)據(jù)庫(kù)中存在的簡(jiǎn)歷數(shù)據(jù)能夠快速有效地被檢索出并在web服務(wù)器中呈現(xiàn)出來(lái)。本發(fā)明的搜索方法能夠?qū)崿F(xiàn)簡(jiǎn)歷數(shù)據(jù)庫(kù)內(nèi)的所有簡(jiǎn)歷都快速有效地被檢索出來(lái),在保證檢索準(zhǔn)確性的情況下大幅提高了檢索速度。
文檔編號(hào)G06F17/30GK102231168SQ20111021665
公開(kāi)日2011年11月2日 申請(qǐng)日期2011年7月29日 優(yōu)先權(quán)日2011年7月29日
發(fā)明者俞希林, 孔衛(wèi)東 申請(qǐng)人:前錦網(wǎng)絡(luò)信息技術(shù)(上海)有限公司