專利名稱:一種基于Lucene的桌面搜索系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于Lucene的桌面搜索系統(tǒng)及方法,屬于信息技術(shù)處理領(lǐng)域。
背景技術(shù):
信息爆炸的時(shí)代,硬盤容量不斷增大,本地文件系統(tǒng)目錄結(jié)構(gòu)越來越復(fù)雜,文件數(shù)量越來越龐大,對文件快速搜 索的需要也越來越迫切,桌面搜索應(yīng)運(yùn)而生。桌面搜索,是一種個(gè)人計(jì)算機(jī)上存儲(chǔ)的信息進(jìn)行索引、查找的檢索工具,面向個(gè)人文檔管理,在個(gè)人信息管理領(lǐng)域中受到用戶的歡迎。目前較為成熟的桌面搜索引擎有GoogleDesktop Search、百度硬盤搜索、網(wǎng)絡(luò)豬、微軟桌面搜索等商用免費(fèi)軟件,其功能較為強(qiáng)大,但是建立索引需要時(shí)間長,更新索引速度慢,索引實(shí)時(shí)性不高,硬盤等系統(tǒng)資源占用率高。另外由于商業(yè)利益存在,桌面搜索系統(tǒng)涉及用戶本地磁盤文件,用戶安全性和可擴(kuò)展性受到限制,從用戶體驗(yàn)、索引實(shí)時(shí)性和系統(tǒng)資源占用率上來說,都有很大的欠缺。
發(fā)明內(nèi)容
發(fā)明目的針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種實(shí)時(shí)性好、占用資源少的基于Lucene的桌面搜索系統(tǒng)及方法。技術(shù)方案一種基于Lucene的桌面搜索系統(tǒng),所述系統(tǒng)在Lucene的基礎(chǔ)上擴(kuò)充了中文處理和文本分析功能,包括四個(gè)模塊
索引文件構(gòu)建模塊,用于系統(tǒng)第一次啟動(dòng)時(shí)為存儲(chǔ)在磁盤上包含文本信息的文件建立倒排索引;
索引文件實(shí)時(shí)更新模塊,用于實(shí)現(xiàn)對文件刪除與修改等操作監(jiān)控與索引更新,確保文件與索引信息一致;
索引文件定時(shí)更新模塊,用于當(dāng)系統(tǒng)停止運(yùn)行時(shí)間達(dá)到規(guī)定值時(shí)重新掃描磁盤上包含文本信息的文件,更新索引文件;
用戶交互模塊,用于接收用戶的查詢請求,并進(jìn)行相似度計(jì)算,將查詢結(jié)果由高到低排列返回給用戶。一種基于Lucene的桌面搜索方法,包括以下步驟
步驟1,若系統(tǒng)在計(jì)算機(jī)上第一次啟動(dòng),則進(jìn)入步驟2,否則進(jìn)入步驟4 ;
步驟2,掃描本地磁盤的所有文件,根據(jù)文件擴(kuò)展名識(shí)別出word、pdf、html等各種包含文本信息的文件,提取文本和元數(shù)據(jù);
步驟3,為文本文件建立倒排索引和索引文件列表,所述索引文件列表記錄文本文件的路徑和修改時(shí)間;進(jìn)入步驟5 ;
步驟4,查看系統(tǒng)停止運(yùn)行時(shí)間,更新索引和索引文件列表。具體包括以下步驟
步驟4-1,判斷系統(tǒng)停止運(yùn)行時(shí)間是否達(dá)到規(guī)定值
若停止運(yùn)行時(shí)間已經(jīng)達(dá)到規(guī)定值,進(jìn)入步驟4-2 ;若停止運(yùn)行時(shí)間沒有達(dá)到規(guī)定值,進(jìn)入步驟4-3 ;
步驟4-2,重新掃描存儲(chǔ)在磁盤上包含文本信息的文件,獲取文本文件后,與索引文件列表相比較,分析文件在系統(tǒng)停止運(yùn)行期間發(fā)生的變化;
步驟4-3,實(shí)時(shí)監(jiān)聽系統(tǒng)文件變化,包括文件創(chuàng)建、文件修改、文件刪除和文件重命
名;
步驟4-4,獲取文件變化后,更新索引和索引文件列表中相應(yīng)的信息,確保文件和索引
信息一致;
步驟5,接受用戶的查詢請求,允許用戶指定要查找的文件類型和文件修改時(shí)間的范
圍;
步驟6,獲得用戶的查詢請求后,將查詢請求按照詞典分詞進(jìn)行切分處理,讀取經(jīng)切分處理后的詞對應(yīng)的倒排索引信息,利用索引計(jì)算查詢與文件的相似度,將查詢結(jié)果由高到低排列返回給用戶。所述步驟2分析包含文本信息的文件時(shí),實(shí)現(xiàn)Lucene的解析文本的接口,通過配置文件,使用不同的解析器處理不同格式的文本以提取文本和元數(shù)據(jù)。所述步驟2分析包含文本信息的文件時(shí),使用IKAnalyzer分詞器處理中文,結(jié)合詞典分詞和文法分析算法拆分文本信息。所述步驟4-2獲取文本文件后,與索引文件列表相比較,為不在索引文件列表中的文本文件創(chuàng)建索引,更新修改時(shí)間在索引文件列表中記錄的時(shí)間之后的文本文件的索引信息,刪除索引文件列表中存在但磁盤上不存在的文本文件的索引信息。本發(fā)明與現(xiàn)有技術(shù)相比,具有的有益效果是
本發(fā)明是一種基于Lucene的桌面搜索系統(tǒng)及方法,索引文件格式獨(dú)立于應(yīng)用平臺(tái),在傳統(tǒng)全文檢索引擎的倒排索引的基礎(chǔ)上實(shí)現(xiàn)了分塊索引,提升索引速度。在Lucene的面向?qū)ο蟮南到y(tǒng)架構(gòu)上,方便擴(kuò)充新功能,便于后續(xù)的維護(hù)和升級(jí)。本發(fā)明的兩種索引文件更新方法用于獲取系統(tǒng)文件變化,確保文件和索引信息的一致,擁有較高的查全率和查準(zhǔn)率。
圖I為本發(fā)明實(shí)施例的系統(tǒng)框 圖2為本發(fā)明實(shí)施例的方法流程 圖3為本發(fā)明實(shí)施例中基于Lucene的桌面搜索方法構(gòu)建索引的流程圖。
具體實(shí)施例方式下面結(jié)合具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各種等價(jià)形式的修改均落于本申請所附權(quán)利要求所限定的范圍。設(shè)計(jì)桌面搜索的基本思路是提取本地文件的關(guān)鍵信息,建立和維護(hù)一個(gè)索引文件的集合,在索引文件中對用戶輸入的關(guān)鍵字進(jìn)行匹配,并定位到相應(yīng)的文件。倒排索引由屬性值來確定記錄的位置,能夠?qū)崿F(xiàn)文件的快速查找。桌面搜索的核心就在于建立和維護(hù)索弓I文件以及進(jìn)行查詢操作。如圖I所示,基于Lucene的桌面搜素系統(tǒng)包括以下四個(gè)模塊索引文件構(gòu)建模塊,用于系統(tǒng)第一次啟動(dòng)時(shí)為存儲(chǔ)在磁盤上包含文本信息的文件建立倒排索引;
索引文件實(shí)時(shí)更新模塊,用于實(shí)現(xiàn)對文件刪除與修改等操作監(jiān)控與索引更新,確保文件與索引信息一致;
索引文件定時(shí)更新模塊,用于當(dāng)系統(tǒng)停止運(yùn)行時(shí)間達(dá)到規(guī)定值時(shí)重新掃描磁盤上包含文本信息的文件,更新索引文件;
用戶交互模塊,用于接收用戶的查詢請求,并進(jìn)行相似度計(jì)算,將查詢結(jié)果由高到低排列返回給用戶。按照如圖2所示的流程圖,基于Lucene的桌面搜索方法,包括以下步驟
步驟1,如果系統(tǒng)在計(jì)算機(jī)上第一次啟動(dòng),則進(jìn)入步驟2,否則進(jìn)入步驟3。步驟2,掃描本地磁盤的所有文件,根據(jù)文件擴(kuò)展名識(shí)別出word、pdf、html等各種包含文本信息的文件,提取文本和元數(shù)據(jù),為文本文件建立倒排索引和索引文件列表。索引文件列表記錄文本文件的路徑和修改時(shí)間。如圖3所示,為基于Lucene的桌面搜索方法為文本文件構(gòu)建索引的詳細(xì)流程
步驟2-1,掃描存儲(chǔ)在本地磁盤的文件,根據(jù)文件擴(kuò)展名篩選出word、pdf、html等各種包含文本信息的文件;
步驟2-2,根據(jù)文件類型,通過配置文件,調(diào)用不同類型的文檔解析器對相應(yīng)的文檔進(jìn)行解析,以提取文本和元數(shù)據(jù);
步驟2-3,使用IKAnalyzer分詞器處理得到的文本,結(jié)合詞典分詞和文法分析算法拆分文本信息;
步驟2-4,對文本切分出的關(guān)鍵詞,相應(yīng)地保存該關(guān)鍵詞所在文件的文件標(biāo)示符,在每個(gè)文件中出現(xiàn)的次數(shù)(詞頻)、位置等信息,即獲得每個(gè)關(guān)鍵詞對應(yīng)的全文索引信息。采用倒排索引保存每個(gè)關(guān)鍵詞的全文索引。關(guān)鍵詞表中的每個(gè)詞對應(yīng)一個(gè)倒排索引鏈表,鏈表包含了該關(guān)鍵詞所在文件的文件標(biāo)示符、詞頻、出現(xiàn)位置等信息,將文本文件的路徑和修改時(shí)間寫入索引文件列表;
步驟2-5,對于倒排索引鏈表采用壓縮方法保存。倒排索引鏈通過可變字節(jié)編碼的方式對索引文件的整型數(shù)據(jù)進(jìn)行壓縮,首先根據(jù)文件標(biāo)示符排序,然后將文件標(biāo)識(shí)符轉(zhuǎn)換為相鄰文件標(biāo)識(shí)符的差值,即采用小整數(shù)保存文件標(biāo)識(shí)符,然后對倒排索引進(jìn)行壓縮。步驟3,查看系統(tǒng)停止運(yùn)行時(shí)間,更新索引文件。具體包括以下步驟
步驟3-1,判斷系統(tǒng)停止運(yùn)行時(shí)間是否達(dá)到規(guī)定值;
若停止運(yùn)行時(shí)間已經(jīng)達(dá)到規(guī)定值,進(jìn)入步驟3-2 ;
若停止運(yùn)行時(shí)間沒有達(dá)到規(guī)定值,進(jìn)入步驟3-3 ;
步驟3-2,重新掃描存儲(chǔ)在磁盤上包含文本信息的文件,獲取文本文件后,與索引文件列表相比較,分析文件在系統(tǒng)停止運(yùn)行期間發(fā)生的變化。文本文件不在索引文件列表中,說明該文件在系統(tǒng)停止運(yùn)行期間創(chuàng)建的;若文件的修改時(shí)間晚于索引文件列表中記錄的時(shí)間,說明該文件在系統(tǒng)停止運(yùn)行期間修改過;若文件存在于索引文件列表中但不在磁盤中,說明該文件在系統(tǒng)停止運(yùn)行期間已經(jīng)刪除;
步驟3-3,實(shí)時(shí)監(jiān)聽系統(tǒng)文件變化事件,包括文件創(chuàng)建、文件修改、文件刪除和文件重命名;步驟3-4,獲取文件變化事件后,更新索引文件和索引文件列表中相應(yīng)的信息,確保文件和索引信息一致。針對創(chuàng)建文件事件,將文檔添加到原有的索引文件中時(shí),生成增量索弓丨,僅分析新出現(xiàn)的文件并建立倒排索引,周期性地與其他現(xiàn)有索引合并,避免重建索引。針對文件刪除事件,將文件對應(yīng)的索引信息標(biāo)記為“刪除”,在發(fā)生段合并操作時(shí)回收磁盤空間。步驟4,通過可視化界面接受用戶的查詢請求。搜索請求允許用戶輸入關(guān)鍵詞序列,指定要搜索的文件類型及文件修改日期。步驟5,獲得用戶的查詢請求后,采用分析算法優(yōu)化查詢關(guān)鍵字的搜索排列組合。讀取該關(guān)鍵詞對應(yīng)的索引信息,計(jì)算查詢請求與文件之間的相似度。計(jì)算方式為查詢語句(q)中每個(gè)關(guān)鍵詞(t)與文檔(d)的匹配分值之和。計(jì)算公式如下
權(quán)利要求
1.一種基于Lucene的桌面搜索系統(tǒng),其特征在于所述系統(tǒng)在Lucene的基礎(chǔ)上擴(kuò)充了中文處理和文本分析功能,包括四個(gè)模塊 索引文件構(gòu)建模塊,用于系統(tǒng)第一次啟動(dòng)時(shí)為存儲(chǔ)在磁盤上包含文本信息的文件建立倒排索引; 索引文件實(shí)時(shí)更新模塊,用于實(shí)現(xiàn)對文件刪除與修改操作監(jiān)控與索引更新,確保文件與索引信息一致; 索引文件定時(shí)更新模塊,用于當(dāng)系統(tǒng)停止運(yùn)行時(shí)間達(dá)到規(guī)定值時(shí)重新掃描磁盤上包含文本信息的文件,更新索引文件; 用戶交互模塊,用于接收用戶的查詢請求,并進(jìn)行相似度計(jì)算,將查詢結(jié)果由高到低排列返回給用戶。
2.一種基于Lucene的桌面搜索方法,其特征在于,包括以下步驟 步驟I,若系統(tǒng)在計(jì)算機(jī)上第一次啟動(dòng),則進(jìn)入步驟2,否則進(jìn)入步驟4 ; 步驟2,掃描本地磁盤的所有文件,根據(jù)文件擴(kuò)展名識(shí)別出各種包含文本信息的文件,提取文本和元數(shù)據(jù); 步驟3,為文本文件建立倒排索引和索引文件列表,所述索引文件列表記錄文本文件的路徑和修改時(shí)間;進(jìn)入步驟5 ; 步驟4,查看系統(tǒng)停止運(yùn)行時(shí)間,更新索引和索引文件列表,具體包括以下步驟 步驟4-1,判斷系統(tǒng)停止運(yùn)行時(shí)間是否達(dá)到規(guī)定值 若停止運(yùn)行時(shí)間已經(jīng)達(dá)到規(guī)定值,進(jìn)入步驟4-2 ; 若停止運(yùn)行時(shí)間沒有達(dá)到規(guī)定值,進(jìn)入步驟4-3 ; 步驟4-2,重新掃描存儲(chǔ)在磁盤上包含文本信息的文件,獲取文本文件后,與索引文件列表相比較,分析文件在系統(tǒng)停止運(yùn)行期間發(fā)生的變化; 步驟4-3,實(shí)時(shí)監(jiān)聽系統(tǒng)文件變化,包括文件創(chuàng)建、文件修改、文件刪除和文件重命名; 步驟4-4,獲取文件變化后,更新索引和索引文件列表中相應(yīng)的信息,確保文件和索引信息一致; 步驟5,接受用戶的查詢請求,允許用戶指定要查找的文件類型和文件修改時(shí)間的范圍; 步驟6,獲得用戶的查詢請求后,將查詢請求按照詞典分詞進(jìn)行切分處理,讀取經(jīng)切分處理后的詞對應(yīng)的倒排索引信息,利用索引計(jì)算查詢與文件的相似度,將查詢結(jié)果由高到低排列返回給用戶。
3.如權(quán)利要求2所述的基于Lucene的桌面搜索方法,其特征在于所述步驟2分析包含文本信息的文件時(shí),實(shí)現(xiàn)Lucene的解析文本的接口,通過配置文件,使用不同的解析器處理不同格式的文本以提取文本和元數(shù)據(jù)。
4.如權(quán)利要求2所述的基于Lucene的桌面搜索方法,其特征在于所述步驟2分析包含文本信息的文件時(shí),使用IKAnalyzer分詞器處理中文,結(jié)合詞典分詞和文法分析算法拆分文本信息。
5.如權(quán)利要求2所述的基于Lucene的桌面搜索方法,其特征在于所述步驟4_2獲取文本文件后,與索引文件列表相比較,為不在索引文件列表中的文本文件創(chuàng)建索引,更新修改時(shí)間在索引文件列表中記錄的時(shí)間之后的文本文件的索引信息,刪除索引文件列表中存在但磁盤上不存在的·文本文件的索引信息。
全文摘要
本發(fā)明公開一種基于Lucene的桌面搜索系統(tǒng)及方法,所述系統(tǒng)在Lucene的基礎(chǔ)上擴(kuò)充了中文處理和文本分析功能,包括四個(gè)模塊索引文件構(gòu)建模塊、索引文件實(shí)時(shí)更新模塊、索引文件定時(shí)更新模塊和用戶交互模塊。方法包括以下步驟掃描存儲(chǔ)在本地磁盤上包含文本信息的文件,提取文件的名稱、路徑、內(nèi)容等關(guān)鍵信息,建立倒排索引;監(jiān)控對文件刪除與修改等操作,更新索引,確保文件和索引信息一致;接收用戶的查詢請求,讀取查詢請求對應(yīng)的索引,并進(jìn)行相似度計(jì)算,將查詢結(jié)果由高到低排列返回給用戶,幫助用戶快速而準(zhǔn)確的定位所需信息。本發(fā)明實(shí)時(shí)性好、占用資源少,擁有較高的查全率和查準(zhǔn)率。
文檔編號(hào)G06F17/30GK102819592SQ20121028016
公開日2012年12月12日 申請日期2012年8月8日 優(yōu)先權(quán)日2012年8月8日
發(fā)明者馮鈞, 胡小克, 聶妮, 付言章, 唐志賢, 卞一路, 盛震宇, 許瀟, 徐黎明, 史涯晴 申請人:河海大學(xué)