本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,尤其涉及一種文檔存儲(chǔ)方法及裝置,同時(shí)還涉及一種文檔檢索方法及裝置。
背景技術(shù):
:隨著信息技術(shù)的發(fā)展進(jìn)步,對(duì)信息資源的管理是一項(xiàng)綜合性的、多學(xué)科交叉的工作。其中對(duì)于信息的檢索往往要占整個(gè)信息資源管理工作量的一半以上?,F(xiàn)有的信息檢索系統(tǒng)通常是基于精確索引以及結(jié)構(gòu)化條件進(jìn)行檢索。然而隨著大數(shù)據(jù)和云技術(shù)的普及,由于信息的形式多種多樣,在這種條件下,目前的檢索技術(shù)明顯跟不上步伐,因此對(duì)于快速模糊檢索文檔的需求越來越高。目前使用模糊檢索的通常是一些專業(yè)的搜索公司,例如百度、谷歌。然而這些專業(yè)的搜索公司通常是面向網(wǎng)頁的,并且檢索系統(tǒng)的規(guī)模非常龐大和復(fù)雜,不能滿足中小規(guī)模的檢索需求。而目前中小規(guī)模的檢索服務(wù)通常是基于lucene。然而,基于lucene的檢索服務(wù)雖然簡(jiǎn)單小巧,但是由于是基于磁盤操作,索引重建費(fèi)時(shí),搜索速度不夠快,即使固態(tài)硬盤技術(shù)使之有了提高。因此,目前急需一種快速的模糊檢索方法。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種文檔存儲(chǔ)、檢索方法及裝置,用以解決現(xiàn)有技術(shù)中中小規(guī)模的檢索服務(wù)效率低的問題。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用下述的技術(shù)方案:依據(jù)本發(fā)明的一個(gè)方面,提供一種文檔存儲(chǔ)方法,包括如下步驟:提取文檔的關(guān)鍵字;根據(jù)所述文檔的內(nèi)容生成標(biāo)識(shí)信息;獲取所述文檔的存儲(chǔ)信息;將所述關(guān)鍵字與所述文檔標(biāo)識(shí)的鍵值對(duì)、所述文檔標(biāo)識(shí)與所述存儲(chǔ)信息的鍵值對(duì)作為所述文檔的索引存儲(chǔ)于數(shù)據(jù)庫中。進(jìn)一步地,所述提取文檔的關(guān)鍵字,具體包括:對(duì)文檔內(nèi)容進(jìn)行分詞處理,計(jì)算分詞后每個(gè)詞在文檔內(nèi)容中的權(quán)值;篩選出權(quán)值不小于第一預(yù)設(shè)閾值的詞語,所述詞語即為所述文檔的關(guān)鍵字。進(jìn)一步地,所述數(shù)據(jù)庫包括內(nèi)存數(shù)據(jù)庫以及mysql數(shù)據(jù)庫;其中,所述內(nèi)存數(shù)據(jù)庫存儲(chǔ)訪問熱度大于第二預(yù)設(shè)閾值的文檔的索引;所述mysql數(shù)據(jù)庫存儲(chǔ)所有文檔的索引。進(jìn)一步地,所述方法還包括:根據(jù)所述訪問熱度對(duì)所述數(shù)據(jù)庫存儲(chǔ)的索引進(jìn)行調(diào)整;當(dāng)所述內(nèi)存數(shù)據(jù)庫中文檔的訪問熱度小于或等于第二預(yù)設(shè)閾值時(shí),則將所述文檔的索引刪除;當(dāng)所述mysql數(shù)據(jù)庫中文檔的訪問熱度大于第二預(yù)設(shè)閾值時(shí),則將所述文檔的索引存儲(chǔ)至所述內(nèi)存數(shù)據(jù)庫中。進(jìn)一步地,所述訪問熱度的計(jì)算公式為:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N為所述訪問熱度;t為所述文檔的最近訪問時(shí)間;w(keyn)為檢索內(nèi)容關(guān)鍵字keyn的熱度;hits為所述文檔的訪問次數(shù);a1為第一調(diào)整系數(shù)。依據(jù)本發(fā)明的一個(gè)方面,提供一種文檔檢索方法,基于上述的文檔存儲(chǔ)方法存儲(chǔ)的數(shù)據(jù)庫進(jìn)行檢索,所述文檔檢索方法包括:提取檢索內(nèi)容關(guān)鍵字;根據(jù)所述數(shù)據(jù)庫中存儲(chǔ)的關(guān)鍵字與文檔標(biāo)識(shí)鍵值對(duì),查找所述檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的目標(biāo)文檔標(biāo)識(shí);根據(jù)所述數(shù)據(jù)庫中的存儲(chǔ)文檔標(biāo)識(shí)與存儲(chǔ)信息鍵值對(duì),查找所述目標(biāo)文檔標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)信息,并根據(jù)所述存儲(chǔ)信息獲取目標(biāo)文檔。進(jìn)一步地,所述提取檢索內(nèi)容關(guān)鍵字,具體包括:對(duì)所述檢索內(nèi)容進(jìn)行分詞,根據(jù)預(yù)先存儲(chǔ)的語料信息獲取分詞后每個(gè)詞語的權(quán)值;篩選出權(quán)值不小于第三預(yù)設(shè)閾值的詞語,所述詞語即為所述檢索內(nèi)容關(guān)鍵字。進(jìn)一步地,所述查找檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的目標(biāo)文檔標(biāo)識(shí),具體包括:判斷所述檢索內(nèi)容中是否包括符號(hào)信息,當(dāng)所述檢索內(nèi)容中包括符號(hào)信息時(shí),提取檢索內(nèi)容中的符號(hào)信息,并識(shí)別所述符號(hào)信息的表達(dá)含義;根據(jù)所述表達(dá)含義確定所述檢索內(nèi)容關(guān)鍵字間的邏輯關(guān)系;根據(jù)所述檢索內(nèi)容關(guān)鍵字間的邏輯關(guān)系,對(duì)檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的文檔標(biāo)識(shí)進(jìn)行篩選,篩選后的文檔標(biāo)識(shí)即為所述目標(biāo)文檔標(biāo)識(shí)。進(jìn)一步地,所述方法還包括:根據(jù)所述目標(biāo)文檔標(biāo)識(shí)獲取目標(biāo)文檔的緩存信息;其中,所述緩存信息包括檢索內(nèi)容關(guān)鍵字的熱度和所述檢索內(nèi)容關(guān)鍵字在所述目標(biāo)文檔中出現(xiàn)次數(shù);根據(jù)所述目標(biāo)文檔的緩存信息計(jì)算所述目標(biāo)文檔與所述檢索內(nèi)容關(guān)鍵字的相關(guān)度;根據(jù)所述相關(guān)度對(duì)所述目標(biāo)文檔進(jìn)行排序。進(jìn)一步地,所述相關(guān)度的計(jì)算公式為:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q為所述相關(guān)度;W(keyi)為檢索內(nèi)容關(guān)鍵字keyi的熱度;ni為所述檢索內(nèi)容關(guān)鍵字keyi在目標(biāo)文檔的出現(xiàn)次數(shù);a2為第二調(diào)整系數(shù)。進(jìn)一步地,當(dāng)所述數(shù)據(jù)庫包括內(nèi)存數(shù)據(jù)庫和mysql數(shù)據(jù)庫時(shí);首先從所述內(nèi)存數(shù)據(jù)庫中獲取檢索文檔的索引;若所述內(nèi)存數(shù)據(jù)庫查找不到所述索引時(shí),從所述mysql數(shù)據(jù)庫中查找。依據(jù)本發(fā)明的一個(gè)方面,提供一種文檔存儲(chǔ)裝置,包括:提取單元,用于提取文檔的關(guān)鍵字;生成單元,用于根據(jù)所述文檔的內(nèi)容生成標(biāo)識(shí)信息;獲取單元,用于獲取所述文檔的存儲(chǔ)信息;存儲(chǔ)單元,用于將所述關(guān)鍵字與所述文檔標(biāo)識(shí)的鍵值對(duì)、所述文檔標(biāo)識(shí)與所述存儲(chǔ)信息的鍵值對(duì)作為所述文檔的索引存儲(chǔ)于數(shù)據(jù)庫中。進(jìn)一步地,所述提取單元具體用于:對(duì)文檔內(nèi)容進(jìn)行分詞處理,計(jì)算分詞后每個(gè)詞在文檔內(nèi)容中的權(quán)值;篩選出權(quán)值不小于第一預(yù)設(shè)閾值的詞語,所述詞語即為所述文檔的關(guān)鍵字。進(jìn)一步地,所述數(shù)據(jù)庫包括內(nèi)存數(shù)據(jù)庫以及mysql數(shù)據(jù)庫;其中,所述內(nèi)存數(shù)據(jù)庫存儲(chǔ)訪問熱度大于第二預(yù)設(shè)閾值的文檔的索引;所述mysql數(shù)據(jù)庫存儲(chǔ)所有文檔的索引。進(jìn)一步地,所述裝置還包括調(diào)整單元,用于根據(jù)所述訪問熱度對(duì)所述數(shù)據(jù)庫存儲(chǔ)的索引進(jìn)行調(diào)整;當(dāng)所述內(nèi)存數(shù)據(jù)庫中文檔的訪問熱度小于或等于第二預(yù)設(shè)閾值時(shí),則將所述文檔的索引刪除;當(dāng)所述mysql數(shù)據(jù)庫中文檔的訪問熱度大于第二預(yù)設(shè)閾值時(shí),則將所述文檔的索引存儲(chǔ)至所述內(nèi)存數(shù)據(jù)庫中。進(jìn)一步地,所述調(diào)整單元計(jì)算所述訪問熱度的公式為:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N為所述訪問熱度;t為所述文檔的最近訪問時(shí)間;w(keyn)為檢索內(nèi)容關(guān)鍵字keyn的熱度;hits為所述文檔的訪問次數(shù);a1為第一調(diào)整系數(shù)。依據(jù)本發(fā)明的一個(gè)方面,提供一種文檔檢索裝置,基于上述的文檔存儲(chǔ)裝置進(jìn)行檢索,所述文檔檢索裝置包括:提取模塊,用于提取檢索內(nèi)容關(guān)鍵字;第一查找模塊,用于根據(jù)所述文檔存儲(chǔ)裝置存儲(chǔ)的關(guān)鍵字與文檔標(biāo)識(shí)鍵值對(duì),查找所述檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的目標(biāo)文檔標(biāo)識(shí);第二查找模塊,用于根據(jù)所述文檔存儲(chǔ)裝置存儲(chǔ)的文檔標(biāo)識(shí)與存儲(chǔ)信息鍵值對(duì),查找所述目標(biāo)文檔標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)信息,并根據(jù)所述存儲(chǔ)信息獲取目標(biāo)文檔。進(jìn)一步地,所述提取模塊具體用于:對(duì)所述檢索內(nèi)容進(jìn)行分詞,根據(jù)預(yù)先存儲(chǔ)的語料信息獲取分詞后每個(gè)詞語的權(quán)值;篩選出權(quán)值不小于第三預(yù)設(shè)閾值的詞語,所述詞語即為所述檢索內(nèi)容關(guān)鍵字。進(jìn)一步地,所述第一查找模塊具體用于:判斷所述檢索內(nèi)容中是否包括符號(hào)信息,當(dāng)所述檢索內(nèi)容中包括符號(hào)信息時(shí),提取檢索內(nèi)容中的符號(hào)信息,并識(shí)別所述符號(hào)信息的表達(dá)含義;根據(jù)所述表達(dá)含義確定所述檢索內(nèi)容關(guān)鍵字間的邏輯關(guān)系;根據(jù)所述檢索內(nèi)容關(guān)鍵字間的邏輯關(guān)系,對(duì)檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的文檔標(biāo)識(shí)進(jìn)行篩選,篩選后的文檔標(biāo)識(shí)即為所述目標(biāo)文檔標(biāo)識(shí)。進(jìn)一步地,所述裝置還包括排序模塊,具體用于:根據(jù)所述目標(biāo)文檔標(biāo)識(shí)獲取目標(biāo)文檔的緩存信息;其中,所述緩存信息包括檢索內(nèi)容關(guān)鍵字的熱度和所述檢索內(nèi)容關(guān)鍵字在所述目標(biāo)文檔中出現(xiàn)次數(shù);根據(jù)所述目標(biāo)文檔的緩存信息計(jì)算所述目標(biāo)文檔與所述檢索內(nèi)容關(guān)鍵字的相關(guān)度;根據(jù)所述相關(guān)度對(duì)所述目標(biāo)文檔進(jìn)行排序。進(jìn)一步地,所述排序模塊計(jì)算相關(guān)度的公式為:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q為所述相關(guān)度;W(keyi)為檢索內(nèi)容關(guān)鍵字keyi的熱度;ni為所述檢索內(nèi)容關(guān)鍵字keyi在目標(biāo)文檔的出現(xiàn)次數(shù);a2為第二調(diào)整系數(shù)。進(jìn)一步地,當(dāng)所述文檔存儲(chǔ)裝置包括內(nèi)存數(shù)據(jù)庫和mysql數(shù)據(jù)庫時(shí),所述第一查找模塊首先從所述內(nèi)存數(shù)據(jù)庫中獲取檢索文檔的索引;若所述內(nèi)存數(shù)據(jù)庫查找不到所述索引時(shí),從所述mysql數(shù)據(jù)庫中查找。本發(fā)明具有以下有益效果:本發(fā)明實(shí)施例所提供的文檔存儲(chǔ)、檢索方法及裝置,對(duì)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)進(jìn)行了優(yōu)化,在數(shù)據(jù)庫中建立文檔的關(guān)鍵字與文檔標(biāo)識(shí)的鍵值對(duì)、文檔標(biāo)識(shí)與存儲(chǔ)信息的鍵值對(duì)。根據(jù)文檔的關(guān)鍵字、文檔標(biāo)識(shí)、存儲(chǔ)信息之間的對(duì)應(yīng)關(guān)系,可以檢索到對(duì)應(yīng)的文件信息,從而實(shí)現(xiàn)檢索目的。本發(fā)明中通過將文檔內(nèi)容關(guān)鍵字作為文檔信息的檢索信息,而非文件名稱,滿足了文檔模糊檢索的需求。此外,通過采用鍵值對(duì)的形式存儲(chǔ)文檔信息,結(jié)構(gòu)簡(jiǎn)單,可以滿足中小公司對(duì)于模糊檢索需求,同時(shí)有效提高檢索的效率。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例中文檔存儲(chǔ)方法的流程圖;圖2為本發(fā)明一具體實(shí)施例中文檔存儲(chǔ)方法的時(shí)序流程圖;圖3為本發(fā)明實(shí)施例中文檔檢索方法的流程圖;圖4為本發(fā)明一具體實(shí)施例的文檔檢索方法的時(shí)序流程圖;圖5為本發(fā)明實(shí)施例中文檔存儲(chǔ)裝置的結(jié)構(gòu)框圖;圖6為本發(fā)明實(shí)施例中文檔檢索裝置的結(jié)構(gòu)框圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。實(shí)施例1本發(fā)明實(shí)施例提供一種文檔存儲(chǔ)方法,參見圖1,具體包括如下步驟:步驟101,提取文檔的關(guān)鍵字。在該步驟中,在提取文檔的關(guān)鍵字時(shí),對(duì)文檔內(nèi)容進(jìn)行分詞處理,計(jì)算分詞后每個(gè)詞在文檔內(nèi)容中的權(quán)值;篩選出權(quán)值不小于第一預(yù)設(shè)閾值的詞語,詞語即為文檔的關(guān)鍵字。具體地,可以利用分詞器將文檔內(nèi)容切割為一個(gè)個(gè)獨(dú)立的詞語。對(duì)于分詞器已經(jīng)為非常成熟的技術(shù),因此本發(fā)明采用現(xiàn)有的分詞器即可實(shí)現(xiàn)分詞處理,例如ICTCLAS(InstituteofComputingTechnology,ChineseLexicalAnalysisSystem,漢語詞法分析系統(tǒng))、HTTPCWS(HTTPChineseWordSegmentation,基于HTTP的中文分詞系統(tǒng))。在除了進(jìn)行分詞工作外,還需要去除查詢內(nèi)容中無意義或者重要度較低的一些詞語,例如“啊”、“的”等無特殊意思的詞,以達(dá)到消除干擾的目的,提高檢索精度。具體地,根據(jù)每個(gè)分詞后的詞語在整個(gè)文檔中的權(quán)值確定該詞語重要度。對(duì)于確定詞語重要度的可以采用TF-IDF函數(shù)或者對(duì)數(shù)函數(shù)等進(jìn)行計(jì)算。具體的計(jì)算過程已屬于本領(lǐng)域技術(shù)人員所熟知的技術(shù),這里不再贅述。步驟102,根據(jù)文檔的內(nèi)容生成文檔標(biāo)識(shí)。在該步驟中,文檔標(biāo)識(shí)采用哈希值Hash表示。hash是根據(jù)文檔的內(nèi)容的數(shù)據(jù)通過邏輯運(yùn)算得到的數(shù)值,不同的文檔(即使是相同的文檔名)得到的hash值是不同的,所以hash值就成了每一個(gè)文檔的標(biāo)識(shí)。對(duì)于哈希值的生成過程已屬于本領(lǐng)域技術(shù)人員所熟知的技術(shù),常用的算法包括MD4、MD5、SHA-1等,這里不再進(jìn)行贅述。步驟103,獲取文檔的存儲(chǔ)信息??蛇x地,文檔的存儲(chǔ)信息包括文檔名、創(chuàng)建日期、修改日期、版本信息、存儲(chǔ)路徑以及文檔大小等。步驟104,將關(guān)鍵字與文檔標(biāo)識(shí)的鍵值對(duì)、文檔標(biāo)識(shí)與存儲(chǔ)信息的鍵值對(duì)作為文檔的索引存儲(chǔ)于數(shù)據(jù)庫中。在該步驟中,文檔的索引具體的存儲(chǔ)形式采用鍵值對(duì)形式。鍵值對(duì)的存儲(chǔ)方式結(jié)構(gòu)簡(jiǎn)單,對(duì)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)進(jìn)行了優(yōu)化,可以有效滿足中小企業(yè)的檢索需求,同時(shí)提供檢索的效率。具體地,數(shù)據(jù)庫包括內(nèi)存數(shù)據(jù)庫以及mysql數(shù)據(jù)庫;其中,內(nèi)存數(shù)據(jù)庫中存儲(chǔ)訪問熱度大于第二預(yù)設(shè)閾值的文檔的索引;mysql數(shù)據(jù)庫則存儲(chǔ)所有文檔的索引。本發(fā)明通過使用內(nèi)存數(shù)據(jù)庫配合mysql數(shù)據(jù)庫,對(duì)存儲(chǔ)的文檔的索引進(jìn)行冷熱分離,提高檢索的速度及效率。進(jìn)一步地,在檢索時(shí),首先在內(nèi)存數(shù)據(jù)庫中檢索,再從mysql數(shù)據(jù)庫中檢索。這樣基于內(nèi)存訪問速度較快的優(yōu)勢(shì),優(yōu)先從內(nèi)存數(shù)據(jù)庫中檢索訪問熱度較高的文檔,可以有效提高檢索的效率,同時(shí)還可以有效避免lucene檢索過程中的反復(fù)磁盤操作的問題。進(jìn)一步地,在檢索過程中需要根據(jù)訪問熱度對(duì)數(shù)據(jù)庫存儲(chǔ)的索引進(jìn)行更新:當(dāng)內(nèi)存數(shù)據(jù)庫中文檔的訪問熱度小于或等于第二預(yù)設(shè)閾值時(shí),則將該文檔的索引刪除;當(dāng)mysql數(shù)據(jù)庫中文檔的訪問熱度大于第二預(yù)設(shè)閾值時(shí),則將該文檔的索引存儲(chǔ)至內(nèi)存數(shù)據(jù)庫中。其中,當(dāng)訪問熱度小于或等于第二預(yù)設(shè)閾值時(shí),將索引從內(nèi)存數(shù)據(jù)庫刪除淘汰。對(duì)于從內(nèi)存中淘汰的數(shù)據(jù)并不是不需要了,而是暫時(shí)訪問頻度低,重要度下降,因此淘汰的文檔中與訪問熱度相關(guān)的信息(文檔的最近訪問時(shí)間、訪問次數(shù)等信息,后文中關(guān)于數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)中有介紹)需重新寫入mysql數(shù)據(jù)庫中,對(duì)mysql數(shù)據(jù)庫中存儲(chǔ)的文檔的訪問熱度的相關(guān)信息進(jìn)行更新?;谏鲜隹芍瑑?nèi)存數(shù)據(jù)庫所處理的數(shù)據(jù)通常是“短暫”的,即有一定時(shí)間有更新,過時(shí)則有新的數(shù)據(jù)產(chǎn)生?;趦?nèi)存數(shù)據(jù)數(shù)據(jù)讀寫速度快的優(yōu)勢(shì),通過處理熱度高的索引信息,可以有效提高數(shù)據(jù)訪問速度,提高應(yīng)用的性能。而mysql數(shù)據(jù)庫處理永久、穩(wěn)定的數(shù)據(jù),處理實(shí)時(shí)數(shù)據(jù)就相對(duì)少一些,保證數(shù)據(jù)的可靠性和穩(wěn)定性。具體地,訪問熱度的計(jì)算公式如下:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N為訪問熱度;t為文檔的最近訪問時(shí)間;hits為訪問次數(shù);w(keyn)為文檔包括關(guān)鍵字keyn時(shí),而在檢索執(zhí)行過程中關(guān)鍵字keyn作為檢索內(nèi)容關(guān)鍵字時(shí),對(duì)應(yīng)的熱度值。該熱度信息可以為檢索次數(shù)、檢索頻率等檢索相關(guān)的權(quán)值信息,也可以為語料庫中關(guān)鍵字的權(quán)值信息,這里不做限定。a1為第一調(diào)整系數(shù)。對(duì)于第一調(diào)整系數(shù),根據(jù)大量的檢索結(jié)果進(jìn)行確定。在實(shí)際檢索過程中,可以根據(jù)檢索需要進(jìn)行調(diào)整。需要說明的是,本發(fā)明實(shí)施例中,對(duì)于步驟101、步驟102及步驟103的順序僅用于解釋說明,不做具體的限定。任何對(duì)于步驟101、步驟102及步驟103的執(zhí)行順序的調(diào)整,都在本發(fā)明的保護(hù)范圍之內(nèi)。圖2為本發(fā)明一個(gè)具體實(shí)施例中文檔存儲(chǔ)方法的時(shí)序流程圖,具體包括如下步驟:步驟201,打開文檔,提取文檔的內(nèi)容。步驟202,對(duì)文檔的內(nèi)容進(jìn)行分詞處理,計(jì)算分詞后每個(gè)詞匯在該文檔中的權(quán)重值。在給定的閾值范圍內(nèi),根據(jù)權(quán)重值去掉重要度低的關(guān)鍵字。步驟203,根據(jù)文檔內(nèi)容生成哈希值。步驟204,將文檔的哈希值、存儲(chǔ)信息以key/value的形式,分別保存至內(nèi)存數(shù)據(jù)庫和mysql數(shù)據(jù)庫中。步驟205,將文檔關(guān)鍵字、hash值以key/value的形式分別存入內(nèi)存數(shù)據(jù)庫和mysql數(shù)據(jù)庫中。步驟206,將文檔按照存儲(chǔ)路徑存儲(chǔ)到指定位置,存儲(chǔ)流程結(jié)束。實(shí)施例2本發(fā)明實(shí)施例所提供的文檔檢索方法,采用模糊檢索的方式,根據(jù)實(shí)施例1中的文檔存儲(chǔ)方法中數(shù)據(jù)庫建立的文檔的索引來檢索文檔,因此,在數(shù)據(jù)庫中預(yù)先存儲(chǔ)包括關(guān)鍵字與文檔標(biāo)識(shí)鍵值對(duì)、文檔標(biāo)識(shí)與存儲(chǔ)信息鍵值對(duì)的文檔索引。參見圖3,本實(shí)施例所提供的文檔檢索方法,具體包括步驟:步驟301,提取檢索內(nèi)容關(guān)鍵字。在該步驟中,用戶輸入要檢索的內(nèi)容,可能是某個(gè)確定的詞,也有可能是句子,也可能檢索表達(dá)式。其中,首先對(duì)檢索內(nèi)容進(jìn)行分詞處理。實(shí)施例1中已經(jīng)提到具體分詞處理實(shí)現(xiàn)方式,這里不再進(jìn)行說明。接著對(duì)檢索內(nèi)容進(jìn)行分詞后,需要獲取分詞后每個(gè)詞語的權(quán)值。其中,在數(shù)據(jù)庫中預(yù)先設(shè)置了所有詞語的語料信息,包含詞語及該詞語相關(guān)信息,例如數(shù)據(jù)表項(xiàng)及權(quán)值信息,具體的存儲(chǔ)形式可以參見表1。根據(jù)該語料信息直接查詢分詞詞語的權(quán)值信息,并篩選出權(quán)值不小于第三預(yù)設(shè)閾值的詞語作為檢索內(nèi)容關(guān)鍵字。詞語編碼數(shù)據(jù)表項(xiàng)權(quán)值W表1步驟302,根據(jù)數(shù)據(jù)庫中存儲(chǔ)的關(guān)鍵字與文檔標(biāo)識(shí)鍵值對(duì),查找檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的目標(biāo)文檔標(biāo)識(shí)。其中,數(shù)據(jù)庫中預(yù)先存儲(chǔ)了文檔的關(guān)鍵字與文檔標(biāo)識(shí)的鍵值對(duì)。在進(jìn)行查找時(shí),判斷當(dāng)檢索內(nèi)容中是否包含符號(hào)信息時(shí):當(dāng)檢索內(nèi)容中不包含符號(hào)信息時(shí),根據(jù)該鍵值對(duì)即可獲取檢索內(nèi)容關(guān)鍵字對(duì)應(yīng)的文檔標(biāo)識(shí)即為目標(biāo)文檔標(biāo)識(shí)。當(dāng)檢索內(nèi)容中包含符號(hào)信息時(shí),需要對(duì)檢索到的關(guān)鍵字對(duì)應(yīng)的文檔標(biāo)識(shí)做進(jìn)一步的篩選。具體包括:步驟3021,提取檢索內(nèi)容中的符號(hào)信息,并識(shí)別符號(hào)信息的表達(dá)含義。在該步驟中,檢索內(nèi)容通常采用檢索表達(dá)式的形式。例如,軍艦+汽車-航母。表達(dá)式中的特殊符號(hào)信息。本發(fā)明實(shí)施例中,“+”代表“與”邏輯關(guān)系;空格代表“或”邏輯,不帶任何特殊符號(hào)表示與,“-”代表“非”邏輯關(guān)系。步驟3022,根據(jù)表達(dá)含義確定關(guān)鍵字間的邏輯關(guān)系。舉例說明,檢索的表達(dá)式是:軍艦+汽車-航母;即在文檔中搜索的必須有軍艦、汽車,并且不能有航母的文檔;如果檢索的表達(dá)式是軍艦汽車,那么搜索內(nèi)容為軍艦、汽車兩個(gè)詞匯中的任何一個(gè)或兩個(gè)全都存在的文檔。步驟3023,根據(jù)關(guān)鍵字間的邏輯關(guān)系,對(duì)關(guān)鍵字所對(duì)應(yīng)的文檔標(biāo)識(shí)進(jìn)行篩選,篩選后的文檔標(biāo)識(shí)即為目標(biāo)文檔標(biāo)識(shí)。舉例說明,檢索的關(guān)鍵字:軍艦+汽車-航母。獲取含軍艦這個(gè)關(guān)鍵字的文檔標(biāo)識(shí)集;作為一個(gè)文檔序列f1;檢索含有汽車關(guān)鍵字的文檔序列f2和含有航母關(guān)鍵字的文檔序列f3。在篩選時(shí),首先檢索f1中是否有f3中檢索出的文檔hash,從f1中去除f3中含有的項(xiàng)目,對(duì)f2做同樣的處理操作,從而生成f1`和f2`;取f1`和f2`中的數(shù)據(jù)結(jié)果進(jìn)行取交集操作,合并為序列f,篩選完成。進(jìn)一步地,數(shù)據(jù)庫包括內(nèi)存數(shù)據(jù)庫以及mysql數(shù)據(jù)庫。首先從內(nèi)存數(shù)據(jù)庫中查找索引信息;若內(nèi)存數(shù)據(jù)庫查找不到文檔的索引時(shí),從mysql數(shù)據(jù)庫中檢索。本發(fā)明中通過采用內(nèi)存數(shù)據(jù)庫存儲(chǔ)索引信息,可以有效提高檢索的速度,同時(shí)還可以有效避免lucene檢索過程中的反復(fù)磁盤操作的問題。步驟303,根據(jù)數(shù)據(jù)庫中的存儲(chǔ)文檔標(biāo)識(shí)與存儲(chǔ)信息鍵值對(duì),查找目標(biāo)文檔標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)信息,并根據(jù)存儲(chǔ)信息獲取目標(biāo)文檔。當(dāng)獲取關(guān)鍵字對(duì)應(yīng)哈希值后,根據(jù)數(shù)據(jù)庫中存儲(chǔ)的哈希值-存儲(chǔ)信息鍵值對(duì)獲取每個(gè)哈希值對(duì)應(yīng)的存儲(chǔ)信息,并將該文檔存儲(chǔ)信息返回給用戶。具體地文檔存儲(chǔ)信息的存儲(chǔ)結(jié)構(gòu),參見表2,表名為_file_index。Index為文檔哈希值對(duì)應(yīng)的存儲(chǔ)信息指向。文檔名創(chuàng)建日期修改日期版本信息存儲(chǔ)路徑文檔大小表2用戶根據(jù)具體的文檔名、創(chuàng)建日期、版本信息、存儲(chǔ)路徑、文檔大小等信息確定是否符合檢索要求。當(dāng)確定后,選取某一文檔的存儲(chǔ)信息,并根據(jù)該存儲(chǔ)信息從文檔的存儲(chǔ)位置中提取文檔內(nèi)容。進(jìn)一步地,該文檔檢索方法還包括:根據(jù)目標(biāo)文檔標(biāo)識(shí)獲取目標(biāo)文檔的緩存信息;其中,緩存信息包括檢索內(nèi)容關(guān)鍵字的熱度和檢索內(nèi)容關(guān)鍵字在目標(biāo)文檔中出現(xiàn)次數(shù);根據(jù)目標(biāo)文檔的緩存信息計(jì)算目標(biāo)文檔與檢索內(nèi)容關(guān)鍵字的相關(guān)度;根據(jù)相關(guān)度對(duì)目標(biāo)文檔進(jìn)行排序。具體地,文檔緩存信息包括檢索內(nèi)容關(guān)鍵字的熱度以及檢索內(nèi)容關(guān)鍵字在目標(biāo)文檔的出現(xiàn)次數(shù)。兩個(gè)參數(shù)信息作為文檔的屬性信息與文檔標(biāo)識(shí)一同存儲(chǔ)至數(shù)據(jù)庫中。數(shù)據(jù)庫中對(duì)于文檔標(biāo)識(shí)的存儲(chǔ)結(jié)構(gòu)參見表3。表3與表1相對(duì)應(yīng)的存儲(chǔ),例如表1中存儲(chǔ)的詞語信息為測(cè)試,則表3對(duì)應(yīng)的表名為_tb_ceshi。表3進(jìn)一步地,根據(jù)檢索內(nèi)容關(guān)鍵字熱度以及關(guān)鍵字在文檔中的出現(xiàn)次數(shù)對(duì)目標(biāo)文檔的相關(guān)度計(jì)算,公式如下:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q為相關(guān)度;W(keyi)為文檔包括關(guān)鍵字keyi時(shí),而在檢索過程中關(guān)鍵字keyi作為檢索內(nèi)容關(guān)鍵字時(shí),對(duì)應(yīng)的熱度值;n為檢索內(nèi)容關(guān)鍵字keyi在目標(biāo)文檔的出現(xiàn)次數(shù);a2為第二調(diào)整系數(shù),與第一調(diào)整系數(shù)類似,根據(jù)大量的檢索結(jié)果進(jìn)行確定。在實(shí)際檢索過程中,可以根據(jù)檢索需要進(jìn)行調(diào)整。參見圖4,本發(fā)明提供了一具體實(shí)施例的文檔檢索方法的時(shí)序流程圖,具體包括如下步驟:步驟401,對(duì)該輸入的查詢內(nèi)容進(jìn)行分詞,計(jì)算分詞后關(guān)鍵字的權(quán)值,對(duì)小于閾值的關(guān)鍵字進(jìn)行排除;步驟402,建立關(guān)鍵字的邏輯表達(dá)式,處理與、或、非等邏輯關(guān)系;步驟403,根據(jù)關(guān)鍵字檢索文檔的哈希值;步驟404,根據(jù)生成的邏輯表達(dá)式對(duì)獲取的哈希值進(jìn)一步篩選;步驟405,對(duì)生成檢索結(jié)果文檔按照相關(guān)度的權(quán)重值進(jìn)行計(jì)算,獲取排序結(jié)果;步驟406,根據(jù)結(jié)果hash列表,查詢文檔存儲(chǔ)信息,返回給用戶;步驟407,用戶根據(jù)搜索結(jié)果,選取指定文檔信息,提取文檔信息,檢索流程完畢。實(shí)施例3本發(fā)明實(shí)施例還提供了一種文檔存儲(chǔ)裝置,如圖5所示,包括:提取單元,用于提取文檔的關(guān)鍵字;生成單元,用于根據(jù)文檔的內(nèi)容生成標(biāo)識(shí)信息;獲取單元,用于獲取文檔的存儲(chǔ)信息;存儲(chǔ)單元,用于將關(guān)鍵字與文檔標(biāo)識(shí)的鍵值對(duì)、文檔標(biāo)識(shí)與存儲(chǔ)信息的鍵值對(duì)作為文檔的索引存儲(chǔ)于數(shù)據(jù)庫中。進(jìn)一步地,提取單元具體用于:對(duì)文檔內(nèi)容進(jìn)行分詞處理,計(jì)算分詞后每個(gè)詞在文檔內(nèi)容中的權(quán)值;篩選出權(quán)值不小于第一預(yù)設(shè)閾值的詞語,詞語即為文檔的關(guān)鍵字。進(jìn)一步地,數(shù)據(jù)庫包括內(nèi)存數(shù)據(jù)庫以及mysql數(shù)據(jù)庫;其中,內(nèi)存數(shù)據(jù)庫存儲(chǔ)訪問熱度大于第二預(yù)設(shè)閾值的文檔的索引;mysql數(shù)據(jù)庫存儲(chǔ)所有文檔的索引。進(jìn)一步地,裝置還包括調(diào)整單元,用于根據(jù)訪問熱度對(duì)數(shù)據(jù)庫存儲(chǔ)的索引進(jìn)行調(diào)整;當(dāng)內(nèi)存數(shù)據(jù)庫中文檔的訪問熱度小于或等于第二預(yù)設(shè)閾值時(shí),則將文檔的索引刪除;當(dāng)mysql數(shù)據(jù)庫中文檔的訪問熱度大于第二預(yù)設(shè)閾值時(shí),則將文檔的索引存儲(chǔ)至內(nèi)存數(shù)據(jù)庫中。進(jìn)一步地,調(diào)整單元計(jì)算訪問熱度的公式為:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N為訪問熱度;t為文檔的最近訪問時(shí)間;w(keyn)為文檔包括關(guān)鍵字keyn時(shí),而在檢索過程中關(guān)鍵字keyn作為檢索內(nèi)容關(guān)鍵字時(shí),對(duì)應(yīng)的熱度值;hits為文檔的訪問次數(shù);a1為第一調(diào)整系數(shù)。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例1基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。實(shí)施例4本發(fā)明提供一種文檔檢索裝置,基于實(shí)施例3中的文檔存儲(chǔ)裝置進(jìn)行檢索,包括:提取模塊,用于提取檢索內(nèi)容關(guān)鍵字;第一查找模塊,用于根據(jù)文檔存儲(chǔ)裝置存儲(chǔ)的關(guān)鍵字與文檔標(biāo)識(shí)鍵值對(duì),查找檢索內(nèi)容關(guān)鍵字所對(duì)應(yīng)的目標(biāo)文檔標(biāo)識(shí);第二查找模塊,用于根據(jù)文檔存儲(chǔ)裝置存儲(chǔ)的文檔標(biāo)識(shí)與存儲(chǔ)信息鍵值對(duì),查找目標(biāo)文檔標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)信息,并根據(jù)存儲(chǔ)信息獲取目標(biāo)文檔。進(jìn)一步地,提取模塊具體用于:對(duì)檢索內(nèi)容進(jìn)行分詞,根據(jù)預(yù)先存儲(chǔ)的語料信息獲取分詞后每個(gè)詞語的權(quán)值;篩選出權(quán)值不小于第三預(yù)設(shè)閾值的詞語,詞語即為檢索內(nèi)容關(guān)鍵字。進(jìn)一步地,第一查找模塊具體用于:判斷檢索內(nèi)容中是否包括符號(hào)信息,當(dāng)檢索內(nèi)容中包括符號(hào)信息時(shí),提取檢索內(nèi)容中的符號(hào)信息,并識(shí)別符號(hào)信息的表達(dá)含義;根據(jù)表達(dá)含義確定關(guān)鍵字間的邏輯關(guān)系;根據(jù)關(guān)鍵字間的邏輯關(guān)系,對(duì)關(guān)鍵字所對(duì)應(yīng)的文檔標(biāo)識(shí)進(jìn)行篩選,篩選后的文檔標(biāo)識(shí)即為目標(biāo)文檔標(biāo)識(shí)。進(jìn)一步地,裝置還包括排序模塊,具體用于:根據(jù)目標(biāo)文檔標(biāo)識(shí)獲取目標(biāo)文檔的緩存信息;其中,緩存信息包括檢索內(nèi)容關(guān)鍵字的熱度和檢索內(nèi)容關(guān)鍵字在目標(biāo)文檔中出現(xiàn)次數(shù);根據(jù)目標(biāo)文檔的緩存信息計(jì)算目標(biāo)文檔與檢索內(nèi)容關(guān)鍵字的相關(guān)度;根據(jù)相關(guān)度對(duì)目標(biāo)文檔進(jìn)行排序。進(jìn)一步地,排序模塊計(jì)算相關(guān)度的公式為:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q為相關(guān)度;W(keyi)為文檔包括關(guān)鍵字keyi時(shí),而在檢索過程中關(guān)鍵字keyi作為檢索內(nèi)容關(guān)鍵字時(shí),對(duì)應(yīng)的熱度值;ni為檢索內(nèi)容關(guān)鍵字keyi在目標(biāo)文檔的出現(xiàn)次數(shù);a2為第二調(diào)整系數(shù)。進(jìn)一步地,當(dāng)文檔存儲(chǔ)裝置包括內(nèi)存數(shù)據(jù)庫和mysql數(shù)據(jù)庫時(shí),第一查找模塊首先從內(nèi)存數(shù)據(jù)庫中獲取檢索文檔的索引;若內(nèi)存數(shù)據(jù)庫查找不到索引時(shí),從mysql數(shù)據(jù)庫中查找。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例2基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,程序可存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。雖然通過實(shí)施例描述了本申請(qǐng),本領(lǐng)域的技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。當(dāng)前第1頁1 2 3