本文中討論的實(shí)施方式涉及索引生成程序等。
背景技術(shù):
為了提高文本數(shù)據(jù)的檢索速度,已知通過針對每個(gè)文件對存在或不存在文本數(shù)據(jù)中包含的每個(gè)字符建立索引而形成的位圖索引(例如,參見國際公布小冊子第wo2013/038527號)。
此外,存在這樣的技術(shù):使用記錄中包含的數(shù)據(jù)項(xiàng)的內(nèi)容作為關(guān)鍵字,針對關(guān)鍵字生成用于指示記錄的存儲位置的索引,并且利用該索引來搜索數(shù)據(jù)庫(例如,參見日本公開特許公報(bào)第63-189934號)。
已知一種用于生成與單詞對應(yīng)的指針表索引的技術(shù)(例如,參見2008年4月25日gijutsu-hyohron有限公司的keisukenishida的googlewosasaerugijutsu(支持google的技術(shù)))。將參照圖1來說明該技術(shù)。圖1是示出了指針表索引生成處理的參考示例的圖。如圖1所示,利用該技術(shù),從各個(gè)文檔文件中提取單詞,并且生成和采集與文檔id、單詞id及其出現(xiàn)位置對應(yīng)的索引,并且按照單詞id對所采集的索引進(jìn)行排序。以這種方式來生成轉(zhuǎn)置索引,轉(zhuǎn)置索引是其中文檔id和出現(xiàn)位置與作為參考的單詞id對應(yīng)的指針表索引。
另一種常規(guī)技術(shù)例如在日本公開特許公報(bào)第no.63-271525號中被公開。此外,例如,在2006年6月25日gijutsu-hyohron有限公司的hiroshisekiguchi的apachelucenenyumon(apachelucene介紹)中參見另一種技術(shù)。
然而,存在的問題在于,包含文件、關(guān)鍵字及其出現(xiàn)位置的索引不能容易地以壓縮格式一遍生成。從另一個(gè)觀點(diǎn)來看,存在難以針對關(guān)鍵字來搜索文件及其出現(xiàn)位置的組合的問題。
例如,常規(guī)位圖索引是當(dāng)字符被用作關(guān)鍵字時(shí)包含關(guān)鍵字和文件的索引,但不是包含文件、關(guān)鍵字及其出現(xiàn)位置的索引。索引的生成和壓縮彼此獨(dú)立,并且以兩遍來執(zhí)行。因此,該技術(shù)不能容易地以壓縮格式一遍生成包含文件、關(guān)鍵字及其出現(xiàn)位置的索引。
由于位圖索引不包含關(guān)于出現(xiàn)位置的信息,因此為了針對關(guān)鍵字來搜索文件及其出現(xiàn)位置的組合,用索引來指定目標(biāo)文件,然后通過參考相應(yīng)的文件來檢查關(guān)鍵字在文件中的出現(xiàn)位置。因此,難以針對關(guān)鍵字來搜索文件及其出現(xiàn)位置的組合。
另一方面,因?yàn)槲臋n文件包含不同的單詞,因此每次更新或添加文檔文件時(shí),使用用于生成指針表索引的技術(shù)在巨大的云環(huán)境中以三遍來重復(fù)索引生成處理、采集處理、排序處理和換位處理。此外,索引被一遍壓縮。因此,盡管指針表索引包含文件、關(guān)鍵字及其出現(xiàn)位置,但是該技術(shù)不能容易地針對文檔文件以壓縮格式一遍生成指針表索引。
盡管當(dāng)數(shù)據(jù)項(xiàng)的內(nèi)容被用作關(guān)鍵字時(shí)會出現(xiàn)上述問題,但是不僅在數(shù)據(jù)項(xiàng)的內(nèi)容被用作關(guān)鍵字的情況下,而且在單詞或字符以相同的方式被用作關(guān)鍵字的情況下,也會出現(xiàn)上述問題。
因此,本發(fā)明的實(shí)施方式的一個(gè)方面的目的是容易地以壓縮格式一遍生成包含文件、關(guān)鍵字及其出現(xiàn)位置的索引。本發(fā)明的實(shí)施方式的另一方面的目的是容易地針對關(guān)鍵字搜索文件及其出現(xiàn)位置的組合。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)實(shí)施方式的一個(gè)方面,一種索引生成方法由計(jì)算機(jī)執(zhí)行。該方法包括:在對多個(gè)輸入文件進(jìn)行詞匯分析時(shí)針對多個(gè)輸入文件生成關(guān)鍵字存在信息,關(guān)鍵字存在信息包括關(guān)于在多個(gè)輸入文件中是否存在多個(gè)關(guān)鍵字中的每一個(gè)以及當(dāng)在多個(gè)輸入文件中存在相應(yīng)多個(gè)關(guān)鍵字時(shí)相應(yīng)多個(gè)關(guān)鍵字的存在位置的信息。該處理包括:基于關(guān)鍵字存在信息生成關(guān)于關(guān)鍵字和關(guān)鍵字針對多個(gè)輸入文件的位置的索引信息。
附圖說明
圖1是示出了指針表索引生成處理的參考示例的圖;
圖2是示出了根據(jù)實(shí)施方式的位圖索引生成處理的流程的示例的圖;
圖3是示出了實(shí)施方式中的位圖索引的示例的圖;
圖4是示出了實(shí)施方式中的動態(tài)詞典的示例的圖;
圖5是示出了實(shí)施方式中的散列索引生成處理的示例的圖;
圖6是示出了經(jīng)編碼的文件的配置的示例的圖;
圖7是示出了實(shí)施方式中的檢索處理的示例的圖;
圖8是示出了實(shí)施方式中的散列位圖恢復(fù)處理的示例的圖;
圖9是示出了實(shí)施方式中的索引生成裝置的配置的功能框圖;
圖10是示出了實(shí)施方式中的索引生成處理的流程圖的示例的圖;
圖11是示出了實(shí)施方式中的編碼處理的流程圖的示例的圖;
圖12是示出了實(shí)施方式中的檢索裝置的配置的功能框圖;
圖13是示出了實(shí)施方式中的檢索處理的流程圖的示例的圖;
圖14是示出了計(jì)算機(jī)的硬件配置的示例的圖;
圖15是示出了在計(jì)算機(jī)中運(yùn)行的程序的配置的示例的圖;以及
圖16是示出了實(shí)施方式的系統(tǒng)中的裝置的配置的示例的圖。
具體實(shí)施方式
將參照附圖來說明本發(fā)明的優(yōu)選實(shí)施方式。注意,這些實(shí)施方式不對本發(fā)明進(jìn)行限制。
實(shí)施方式中的位圖索引生成的示例
圖2是示出了實(shí)施方式中的位圖索引生成處理的流程的示例的圖。如圖2所示,在對多個(gè)輸入文件進(jìn)行詞匯分析的過程中,位圖索引生成處理生成關(guān)于存在或不存在多個(gè)單詞以及存在單詞時(shí)單詞針對相應(yīng)文件的位置的各條信息。位圖索引生成處理基于各條所生成的信息來生成單詞和單詞針對相應(yīng)文件的位置的位圖索引。在下文中,將位圖索引生成處理稱為“索引生成處理”。
下面將描述索引生成處理的示例。例如,執(zhí)行索引生成處理的索引生成裝置將包含在文件f1中的一個(gè)文件3作為編碼對象加載到存儲區(qū)域中。注意,文件3的“3”指示文件id為“3”。
索引生成裝置從存儲區(qū)域讀取出文件3,并且對所讀取的文件3執(zhí)行詞匯分析。本文中所指的詞匯分析是指對未被編碼成單詞的文件進(jìn)行分割。
索引生成裝置將靜態(tài)詞典s0與單詞的字符串進(jìn)行比較,并且確定在靜態(tài)詞典s0中是否存在與單詞的字符串對應(yīng)的代碼??梢蕴娲匾韵旅娴姆绞絹韴?zhí)行確定處理。即,索引生成裝置將指定可以使用靜態(tài)詞典s0編碼的單詞的字符串的位過濾器與單詞的字符串進(jìn)行比較,并且確定單詞的字符串是否命中該位過濾器。本文中所指的位過濾器指示指定可以使用靜態(tài)詞典s0編碼的單詞的字符串的過濾器。當(dāng)在靜態(tài)詞典s0中存在與單詞的字符串對應(yīng)的代碼時(shí),索引生成裝置基于靜態(tài)詞典s0將單詞的字符串編碼成與單詞的字符串對應(yīng)的代碼(靜態(tài)碼)。
當(dāng)在靜態(tài)詞典s0中不存在與單詞的字符串對應(yīng)的代碼時(shí),索引生成裝置確定單詞的字符串是否已被登記在動態(tài)詞典d0中。當(dāng)單詞的字符串尚未被登記在動態(tài)詞典d0中時(shí),索引生成裝置將單詞的字符串登記在動態(tài)詞典d0中,并且基于動態(tài)詞典d0將所登記的單詞的字符串編碼成與所登記的單詞的字符串對應(yīng)的動態(tài)碼。當(dāng)單詞的字符串已被登記在動態(tài)詞典d0中時(shí),索引生成裝置基于動態(tài)詞典d0將單詞的字符串編碼成與單詞的字符串對應(yīng)的動態(tài)碼。
靜態(tài)詞典s0指示通過下述方法提供的詞典:基于通用的英語詞典、日語詞典、教科書等指定單詞在文檔中出現(xiàn)的出現(xiàn)頻率,并且對具有較高出現(xiàn)頻率的單詞分配較短的代碼。在靜態(tài)詞典s0中,預(yù)先登記了作為與各個(gè)單詞對應(yīng)的代碼的靜態(tài)碼。另一方面,動態(tài)詞典d0指示其中未被登記在靜態(tài)詞典中的單詞與動態(tài)分配的動態(tài)碼(代碼)彼此對應(yīng)的詞典。未被登記在靜態(tài)詞典s0中的單詞的示例包括具有低出現(xiàn)頻率的單詞(低頻單詞)、未知單詞、數(shù)值、時(shí)間和標(biāo)簽。本文中所指的未知單詞未被登記在靜態(tài)詞典s0中,并且具有在待編碼的文檔中反復(fù)出現(xiàn)的特性。在動態(tài)詞典d0中,與動態(tài)碼對應(yīng)的單詞按照未被登記在靜態(tài)詞典s0中的單詞的出現(xiàn)順序登記在緩沖區(qū)部分中。注意,后面將詳細(xì)描述動態(tài)詞典d0。
索引生成裝置將文件3的編碼數(shù)據(jù)區(qū)域中的通過進(jìn)行編碼而分配的單詞代碼存儲在經(jīng)編碼的文件f2中。
索引生成裝置生成關(guān)于通過編碼而分配的單詞代碼以及由單詞代碼指示的單詞針對文件3的位置的各條信息。索引生成裝置基于所生成的各條信息將針對文件3存在或不存在由單詞代碼指示的單詞設(shè)定到二維位圖索引bi1。索引生成裝置基于所生成的各條信息將單詞代碼以及由單詞代碼指示的單詞針對文件3的位置設(shè)定到三維位圖索引bi2。
本文中所指的二維位圖索引bi1是用于全文檢索的索引,并且是通過將指定單詞的指針和指示在各個(gè)目標(biāo)文件中存在或不存在所述單詞的位進(jìn)行連接而形成的位串。即,二維位圖索引bi1指示通過針對各個(gè)文件對存在或不存在包含在該文件中的單詞建立索引而形成的位圖。在檢索處理中,位圖可以被用作基于位的on和off來指示是否包含了作為檢索目標(biāo)的單詞的索引。作為指定單詞的指針,例如采用單詞的代碼。單詞的代碼指示靜態(tài)碼和單詞代碼,并且具有與單詞id相同的含義。應(yīng)當(dāng)注意,指定單詞的指針可以是例如單詞本身。即,二維位圖索引bi1是通過采集由指定單詞的指針指示的各個(gè)單詞的位圖來形成。如圖2所示,二維位圖索引bi1的x軸指示文件id,二維位圖索引bi1的y軸指示單詞id。換言之,二維位圖索引bi1表示:針對由文件id指示的各個(gè)文件,存在或不存在由單詞id指示的單詞。
本文中所指的三維位圖索引bi2是通過將單詞在各個(gè)目標(biāo)文件中的的位置添加到二維位圖索引bi1而形成的位圖索引。即,三維位圖索引bi2是通過針對各個(gè)文件對包含在文件中的單詞的存在位置建立索引而形成的位圖。如圖2所示,三維位圖索引bi2的x軸指示值(位置),三維位圖索引bi2的y軸指示單詞id,并且三維位圖索引bi2的z軸指示文件id。換言之,三維位圖索引bi2表示:針對由文件id指示的各個(gè)文件,由單詞id所指示的單詞的位置。
將描述當(dāng)索引生成裝置生成文件3的位圖索引時(shí)的處理?!?..sherlock...london...baker...”被存儲在文件3的文本文件中。假設(shè)單詞的字符串“sherlock”、單詞的字符串“l(fā)ondon”和單詞的字符串“baker”尚未被登記在靜態(tài)詞典s0中。
索引生成裝置對文件3執(zhí)行詞匯分析以獲取“sherlock”、“l(fā)ondon”和“baker”。將描述對所獲取的單詞的字符串中的“baker”生成索引的處理作為示例。假設(shè)單詞的字符串“sherlock”和單詞的字符串“l(fā)ondon”已被登記在動態(tài)詞典d0中。
因?yàn)樵陟o態(tài)詞典s0中不存在與單詞的字符串“baker”對應(yīng)的代碼,所以索引生成裝置確定單詞的字符串“baker”是否已被登記在動態(tài)詞典d0中。因?yàn)閱卧~的字符串“baker”尚未被登記在動態(tài)詞典d0中,因此索引生成裝置將單詞的字符串“baker”登記在動態(tài)詞典d0中。然后,索引生成裝置基于動態(tài)詞典d0將所登記的單詞的字符串“baker”編碼成與單詞的字符串對應(yīng)的動態(tài)碼“a002h”。
索引生成裝置將文件3的編碼數(shù)據(jù)區(qū)域中的通過進(jìn)行編碼而分配的單詞代碼“a002h”存儲在經(jīng)編碼的文件f2中。
隨后,索引生成裝置生成關(guān)于通過編碼而分配的單詞代碼“a002h”以及由單詞代碼指示的單詞“baker”針對文件3的位置的各條信息。在本示例中,假定單詞“baker”針對文件3的位置為“23”。
然后,索引生成裝置基于所生成的各條信息,將針對文件3存在或不存在由單詞代碼“a002h”指示的單詞設(shè)定到二維位圖索引bi1。二維位圖索引bi1描繪了與“baker”的單詞id“a002h”對應(yīng)的位圖。作為針對由文件id“3”指示的文件存在或不存在單詞的on即二進(jìn)制數(shù)“1”被設(shè)定到位圖。當(dāng)文件中沒有單詞時(shí),作為針對文件存在或不存在單詞的off被設(shè)定到與該單詞指示的單詞id對應(yīng)的位圖。
索引生成裝置基于所生成的各條信息,將單詞代碼“a002h”以及由單詞代碼指示的單詞針對文件3的位置“23”設(shè)定到三維位圖索引bi2。三維位圖索引bi2描繪了與“baker”的單詞id“a002h”和文件id“3”對應(yīng)的位圖。on即二進(jìn)制數(shù)“1”被設(shè)定到與位圖中的值(位置)“23”對應(yīng)的位。當(dāng)在文件中的預(yù)定位置處沒有單詞時(shí),off被設(shè)定到位圖中的與由單詞指示的單詞id和由文件指示的文件id所對應(yīng)的預(yù)定位置對應(yīng)的位。
因此,索引生成裝置對經(jīng)歷了對文件3的詞匯分析的單詞依次進(jìn)行編碼,并且基于關(guān)于通過編碼提供的單詞代碼和單詞的位置的各條信息來生成二維位圖索引bi1和三維位圖索引bi2。
位圖索引的示例
接著,將參照圖3來描述二維位圖索引的示例。圖3是示出了實(shí)施方式中的位圖索引的示例的圖。如圖3所示,二維位圖索引bi1使位圖對應(yīng)于具有超高頻率的單詞、具有高頻率的單詞以及具有低頻率的單詞的相應(yīng)壓縮碼(對應(yīng)于單詞id)。位圖是表示包含具有超高頻率的單詞、具有高頻率的單詞以及具有低頻率的單詞的壓縮文件的代碼位串。位圖的各個(gè)位表示在各個(gè)文件中存在或不存在具有超高頻率的單詞、具有高頻率的單詞和具有低頻率的單詞。
二維位圖索引bi1使位圖對應(yīng)于例如具有超高頻率的32個(gè)類型的單詞、具有高頻率的8k(8,000)個(gè)類型的單詞以及具有低頻率的大約16k(16,000)個(gè)類型的單詞。當(dāng)在用于出現(xiàn)頻率計(jì)數(shù)的文件組中對各個(gè)單詞的出現(xiàn)頻率進(jìn)行計(jì)數(shù)時(shí),具有超高頻率的單詞指示具有高出現(xiàn)頻率的單詞。具有超高頻率的單詞是例如在用于出現(xiàn)頻率計(jì)數(shù)的文件組中出現(xiàn)頻率的排名高達(dá)前32名的單詞。具有高頻率的單詞是在用于出現(xiàn)頻率計(jì)數(shù)的文件組中出現(xiàn)頻率的排名高達(dá)前8,000名的單詞。具有低頻率的單詞是在用于出現(xiàn)頻率計(jì)數(shù)的文件組中出現(xiàn)頻率的排名低于24,000名的單詞,并且是從待編碼的文件中提取的數(shù)字字符串或單詞。具有低頻率的單詞的示例包括技術(shù)單詞、新詞和未知單詞。本文中所指的技術(shù)單詞通常用于某些特定的學(xué)術(shù)領(lǐng)域、商業(yè)等,并且具有在待編碼的文件中反復(fù)出現(xiàn)的特性。新詞是新創(chuàng)建的詞如流行語,并且具有在待編碼的文件中反復(fù)出現(xiàn)的特性。未知單詞既不是技術(shù)單詞也不是新詞,并且具有在待編碼的文件中反復(fù)出現(xiàn)的特性。
例如,二維位圖索引bi1中的有效第一行描述了由壓縮碼指示的單詞“the”的位圖是“...1101”。該位圖表示包含“the”的壓縮碼的文件。因?yàn)椤?”被存儲在第一位中,所以位圖“...1101”表示文件1包含“the”;因?yàn)椤?”被存儲在第二位中,所以文件2不包含“the”;因?yàn)椤?”被存儲在第3位中,所以文件3包含“the”。此外,因?yàn)椤?”被存儲在第4位中,所以位圖“...1101”表示文件4包含“the”。位圖“...1101”還表示文件5和后續(xù)的其他文件是否包含“the”。
雖然在圖中未示出,但是三維位圖索引bi2使位圖對應(yīng)于相應(yīng)的單詞id和文件id。位圖是當(dāng)壓縮文件包含該單詞時(shí)表示該單詞在壓縮文件中的位置的代碼位串。位圖的各個(gè)位表示在壓縮文件中的相應(yīng)位置處存在或不存在該單詞。
動態(tài)詞典的示例
圖4是示出了實(shí)施方式中的動態(tài)詞典的示例的圖。圖4所示的動態(tài)詞典d0包含緩沖區(qū)部分d1和地址表d2。在緩沖區(qū)部分d1中存儲有字符串。地址表d2以對應(yīng)的方式保存動態(tài)碼、存儲位置和數(shù)據(jù)長度。動態(tài)碼是具有預(yù)先限定的固定長度的代碼,并且是例如壓縮碼。動態(tài)碼按照單詞的字符串的登記順序來分配。動態(tài)碼是從十六進(jìn)制的“a”開始并且具有2個(gè)字節(jié)的固定長度的代碼。存儲位置指示字符串存儲在緩沖區(qū)部分d1中的位置。數(shù)據(jù)長度指示存儲在緩沖區(qū)部分d1中的字符串的長度(以字節(jié)為單位的長度)。
將描述例如對字符串“baker”分配動態(tài)碼的情況。索引生成裝置將字符串“baker”存儲在緩沖區(qū)部分d1中。索引生成裝置將存儲字符串的存儲位置和所存儲的數(shù)據(jù)的長度登記在地址表d2中。在本示例中,索引生成裝置將作為存儲位置的“16”和作為數(shù)據(jù)長度的“6”登記在地址表d2中。
索引生成裝置將地址表d2中的與字符串對應(yīng)的動態(tài)碼分配作為壓縮碼。在本示例中,索引生成裝置將對應(yīng)的動態(tài)碼“a002h”分配給字符串“baker”。
實(shí)施方式中的散列索引生成處理的示例
接著,將參照圖5來描述對二維位圖索引進(jìn)行散列的處理的示例。圖5是示出了實(shí)施方式中的散列索引生成處理的示例的圖。
如圖5所示,索引生成裝置生成通過對與單詞id對應(yīng)的相應(yīng)位圖應(yīng)用散列函數(shù)而提供的多個(gè)散列位圖。當(dāng)假設(shè)32位寄存器時(shí),索引生成裝置基于作為示例的散列值(基數(shù))29和31來對各個(gè)位圖進(jìn)行散列。具體地,對于基于一個(gè)基數(shù)的散列位圖,索引生成裝置將與單詞id對應(yīng)的位圖的各個(gè)位的值設(shè)定到與通過將位圖的各個(gè)位的位置除以基數(shù)而計(jì)算出的余數(shù)相匹配的位置。位圖的各個(gè)位的位置對應(yīng)于相應(yīng)的文件id。作為示例,對于基于基數(shù)29的散列位圖h11,索引生成裝置將位圖b1的各個(gè)位的值設(shè)定到與通過將位圖b1的各個(gè)位的位置除以基數(shù)29而計(jì)算出的余數(shù)相匹配的位置。位圖b1的第35位的位置處的位值“1”被設(shè)定到散列位圖h11的第6位。位圖b1的第42位的位置處的位值“1”被設(shè)定到散列位圖h11的第13位。對于基于基數(shù)31的散列位圖h12,索引生成裝置將位圖b1的各個(gè)位的值設(shè)定到與通過將位圖b1的各個(gè)位的位置除以基數(shù)31而計(jì)算出的余數(shù)相匹配的位置。位圖b1的第35位的位置處的位值“1”被設(shè)定到散列位圖h12的第4位。位圖b1的第42位的位置處的位值“1”被設(shè)定到散列位圖h12的第11位。即,索引生成裝置按照從散列位圖的第0位到第(基數(shù)-1)位的順序從位圖的第0位開始設(shè)定各個(gè)位。然后,索引生成裝置再次返回到散列位圖的第0位,并且將通過與已經(jīng)設(shè)定的值進(jìn)行“或”運(yùn)算而計(jì)算出的值設(shè)定到散列位圖。結(jié)果,索引生成裝置生成位圖b1的散列位圖h11和h12。以這種方式,索引生成裝置生成與指示單詞的相應(yīng)單詞id對應(yīng)的位圖的散列位圖。因此,索引生成裝置生成通過采集所生成的散列位圖而提供的二維散列索引hi1。
索引生成裝置還通過以與用于二維位圖索引bi1的位圖相同的方式對三維位圖索引bi2的位圖應(yīng)用散列函數(shù)來生成多個(gè)散列位圖。然后,索引生成裝置生成通過采集單獨(dú)生成的散列位圖而提供的三維散列索引hi2就足夠了。在下文中,作為示例,假設(shè)散列值(基數(shù))為29和31。
經(jīng)編碼的文件的配置的示例
圖6是示出了經(jīng)編碼的文件的配置的示例的圖。如圖6所示,經(jīng)編碼的文件f2具有頭部分、經(jīng)編碼的數(shù)據(jù)和尾部分。在經(jīng)編碼的數(shù)據(jù)中存儲有通過對各個(gè)文件進(jìn)行編碼而提供的各組單詞代碼。在尾部分中存儲有各個(gè)文件的地址、關(guān)于動態(tài)詞典(公共/個(gè)體)的信息、散列索引(二維/三維)等。各個(gè)文件的地址指示通過對文件進(jìn)行編碼而提供的各條經(jīng)編碼的數(shù)據(jù)的存儲目的地的地址。作為示例,各個(gè)文件的地址是相對于經(jīng)編碼的數(shù)據(jù)的頭的地址。關(guān)于個(gè)體動態(tài)詞典d0的信息對應(yīng)于針對每個(gè)文件的關(guān)于圖4所示的動態(tài)詞典的信息。關(guān)于公共動態(tài)詞典d0的信息對應(yīng)于針對所有的文件的關(guān)于圖4所示的動態(tài)詞典d0的信息。二維散列索引指示二維散列索引hi1。三維散列索引指示三維散列索引hi2。在頭部分中存儲有指向各個(gè)文件的地址的指針、指向詞典d0的指針以及指向存儲在尾部分中的散列索引(二維/三維)的指針。當(dāng)索引生成裝置對各個(gè)文件進(jìn)行編碼時(shí),索引生成裝置將指示通過編碼而提供的各個(gè)結(jié)果的各條經(jīng)編碼的數(shù)據(jù)存儲在經(jīng)編碼的文件f2中,并且將經(jīng)編碼的數(shù)據(jù)的存儲地址作為各個(gè)文件的地址進(jìn)行存儲。在對經(jīng)編碼的數(shù)據(jù)進(jìn)行解碼時(shí),使用頭部分中的指向各個(gè)文件的地址的指針,根據(jù)尾部分中的各個(gè)文件的地址來參考作為解碼目標(biāo)的文件的地址(經(jīng)編碼的數(shù)據(jù))。通過使用頭部分中的指向動態(tài)詞典d0的指針來參考動態(tài)詞典d0以執(zhí)行解碼處理。
實(shí)施方式中的檢索處理的示例
圖7是示出了實(shí)施方式中的檢索處理的示例的圖。如圖7所示,執(zhí)行檢索處理的檢索裝置通過參考二維散列索引hi1,基于形成輸入的檢索關(guān)鍵字的單詞來獲取包含該單詞的文件id。然后,檢索裝置將由單詞指示的單詞id和文件id指定給三維散列索引hi2,以識別該單詞的位置信息。
下面描述檢索處理的示例。例如,當(dāng)執(zhí)行檢索處理的檢索裝置接收到形成檢索關(guān)鍵字的單詞的輸入時(shí),檢索裝置通過參考二維散列索引hi1來提取與由接收到的單詞指示的單詞id對應(yīng)的散列位圖。假設(shè)接收了“sherlock”和“baker”作為單詞。然后,檢索裝置從二維散列索引hi1中提取指示與作為檢索單詞而接收的“sherlock”的單詞id“a000h”對應(yīng)的散列位圖h4。散列位圖h4包括基于基數(shù)29的散列位圖h41和基于基數(shù)31的散列位圖h42。檢索裝置從散列索引hi1中提取與指示作為檢索單詞而接收的“baker”的單詞id“a0002h”對應(yīng)的散列位圖h5。散列位圖h5包括基于基數(shù)29的散列位圖h51和基于基數(shù)31的散列位圖h52。
檢索裝置恢復(fù)所提取的與每個(gè)單詞id對應(yīng)的散列位圖。注意,稍后將描述恢復(fù)散列位圖的處理?;謴?fù)結(jié)果被提供作為與單詞id對應(yīng)的位圖。檢索裝置恢復(fù)與單詞id“a000h”對應(yīng)的散列位圖h4,并且輸出位圖b4作為恢復(fù)結(jié)果。檢索裝置恢復(fù)與單詞id“a002h”對應(yīng)的散列位圖h5,并且輸出位圖b5作為恢復(fù)結(jié)果。
檢索裝置對與單詞id“a000h”對應(yīng)的位圖b4和與單詞id“a002h”對應(yīng)的位圖b5執(zhí)行“與”運(yùn)算。檢索裝置輸出其“與”結(jié)果的位指示on(“1”)的文件id。即,檢索裝置縮窄至包含由單詞id“a000h”指示的“sherlock”和由單詞id“a002h”指示的“baker”的文件的文件id。在本示例中,“3”被輸出作為文件id。
檢索裝置縮窄至文件id,然后通過參考三維散列索引hi2來提取與單詞id和文件id對應(yīng)的散列位圖。在本示例中,檢索裝置從三維散列索引hi2中提取與單詞id“a000h”和文件id“3”對應(yīng)的散列位圖h6。散列位圖h6包括基于基數(shù)29的散列位圖h61和基于基數(shù)31的散列位圖h62。此外,檢索裝置從三維散列索引hi2中提取與單詞id“a002h”和文件id“3”對應(yīng)的散列位圖h7。散列位圖h7包括基于基數(shù)29的散列位圖h71和基于基數(shù)31的散列位圖h72。
檢索裝置恢復(fù)每個(gè)所提取的散列位圖?;謴?fù)結(jié)果被提供作為與單詞id和文件id對應(yīng)的位圖。在本示例中,檢索裝置恢復(fù)與單詞id“a000h”和文件id“3”對應(yīng)的散列位圖h6,并且輸出位圖b6作為恢復(fù)結(jié)果。檢索裝置恢復(fù)與單詞id“a002h”和文件id“3”對應(yīng)的散列位圖h7,并且輸出位圖b7作為恢復(fù)結(jié)果。
檢索裝置指定作為恢復(fù)結(jié)果而輸出的位圖的位指示on(“1”)的值(位置)。在本示例中,檢索裝置指定位圖b6的位指示“1”的值(位置)“10”。檢索裝置指定位圖b7的位指示“1”的值(位置)“23”。
檢索裝置將指定的值(位置)連同文件id和單詞id一起添加到值列表中,并且輸出值列表作為檢索結(jié)果。在本示例中,檢索裝置將指定的值(位置)“10”連同文件id“3”和由單詞id“a000h”指示的“sherlock”一起添加到值列表中。檢索裝置將指定的值(位置)“23”連同文件id“3”和由單詞id“a002h”指示的“baker”一起添加到值列表中。然后,檢索裝置輸出值列表作為檢索結(jié)果。被輸出的檢索結(jié)果的格式不限于此,并且檢索結(jié)果的格式能夠表示檢索關(guān)鍵字存在的文件和位置就足夠了。
利用該檢索處理,檢索裝置可以快速縮窄至由檢索關(guān)鍵字指示的單詞所在的文件和位置。
實(shí)施方式中的散列位圖恢復(fù)處理的示例
接著,將參照圖8來描述恢復(fù)二維散列位圖的處理的示例。圖8是示出了實(shí)施方式中的散列位圖恢復(fù)處理的示例的圖。如圖8所示,散列位圖恢復(fù)處理將與單詞id對應(yīng)的散列位圖恢復(fù)為通過展開散列而提供的位圖。例如,當(dāng)檢索到形成檢索關(guān)鍵字的單詞存在的文件和位置時(shí),執(zhí)行散列位圖恢復(fù)處理。
例如,檢索裝置將圖7所示的散列位圖h4的散列位圖h41和h42中的每一個(gè)展開成位圖(第一恢復(fù)處理)。檢索裝置針對作為基于一個(gè)基數(shù)的散列位圖的恢復(fù)目的地的位圖,將散列位圖的各個(gè)位的值設(shè)定到通過將散列位圖的各個(gè)位的位置加上通過將基數(shù)乘以整數(shù)(0或更大)而計(jì)算出的值而獲得的位置。作為示例,檢索裝置針對作為基于基數(shù)29的散列位圖h41的恢復(fù)目的地的位圖b41,將散列位圖h41的各個(gè)位的值設(shè)定到通過將散列位圖h41的各個(gè)位的位置加上通過將基數(shù)29乘以“0”而計(jì)算出的值而獲得的位置。檢索裝置針對作為基于基數(shù)29的散列位圖h41的恢復(fù)目的地的位圖b41,將散列位圖h41的各個(gè)位的值設(shè)定到通過將散列位圖h41的各個(gè)位的位置加上通過將基數(shù)29乘以“1”而計(jì)算出的值而獲得的位置。檢索裝置重復(fù)該設(shè)定,直到設(shè)定了作為基于基數(shù)29的恢復(fù)目的地的位圖b41的最大位的位置處的位的值為止。以相同的方式,檢索裝置針對作為基于基數(shù)31的散列位圖h42的恢復(fù)目的地的位圖b42,將散列位圖h42的各個(gè)位的值設(shè)定到通過將散列位圖h42的各個(gè)位的位置加上通過將基數(shù)31乘以“0”而計(jì)算出的值而獲得的位置。檢索裝置針對作為基于基數(shù)31的散列位圖h42的恢復(fù)目的地的位圖b42,將散列位圖h42的各個(gè)位的值設(shè)定到通過將散列位圖h42的各個(gè)位的位置加上通過將基數(shù)31乘以“1”而計(jì)算出的值而獲得的位置。檢索裝置重復(fù)該設(shè)定,直到設(shè)定了作為恢復(fù)目的地的位圖b42的最大位的位置處的位的值為止。
檢索裝置對通過第一恢復(fù)處理(第二恢復(fù)處理)進(jìn)行的恢復(fù)所提供的各個(gè)位圖的對應(yīng)位置處的位執(zhí)行“與”運(yùn)算。在本示例中,檢索裝置對從基于基數(shù)29的散列位圖h41恢復(fù)的位圖b41以及從基于基數(shù)31的散列位圖h42恢復(fù)的位圖b42執(zhí)行“與”運(yùn)算。作為恢復(fù)結(jié)果,檢索裝置輸出位圖b4作為“與”結(jié)果。
檢索裝置還以與針對二維散列索引hi1的散列位圖相同的方式恢復(fù)三維散列索引hi2的散列位圖就足夠了。
實(shí)施方式中的索引生成裝置的配置
接著,將參照圖9來描述實(shí)施方式中的索引生成裝置100的配置。圖9是示出了實(shí)施方式中的索引生成裝置的配置的功能框圖。如圖9所示,索引生成裝置100包括控制器110和存儲單元120。
控制器110是執(zhí)行圖2所示的索引生成處理的處理器??刂破?10具有定義各種處理過程的程序以及用于存儲控制數(shù)據(jù)的內(nèi)部存儲器,該控制器110利用它們來執(zhí)行各種處理??刂破?10對應(yīng)于例如集成電路的電子電路如專用集成電路(asic)和現(xiàn)場可編程門陣列(fpga)??商娲兀刂破?10對應(yīng)于電子電路如中央處理單元(cpu)和微處理單元(mpu)??刂破?10包括文件讀取器111、編碼單元112、二維索引生成器113和三維索引生成器114。
存儲單元120對應(yīng)于例如存儲裝置如非易失性半導(dǎo)體存儲元件,如閃存和鐵電隨機(jī)存取存儲器(fram)(注冊商標(biāo))。存儲單元120包括靜態(tài)詞典121、動態(tài)詞典122、二維散列索引123和三維散列索引124。二維散列索引123被散列以用于二維位圖索引。三維散列索引124被散列以用于三維位圖索引。二維位圖索引和三維位圖索引的相應(yīng)的結(jié)構(gòu)分別與圖2和圖3中的結(jié)構(gòu)相同。因此,省略對其的說明。二維散列索引123的結(jié)構(gòu)與通過采集與單詞id對應(yīng)的散列位圖(參見圖5)所提供的結(jié)構(gòu)相同,因此省略對其的描述。三維散列索引124的結(jié)構(gòu)與通過采集與單詞id和文件id對應(yīng)的散列位圖(參見圖5)而提供的結(jié)構(gòu)相同,因此省略對其的描述。
靜態(tài)詞典121是通過下述方法提供的詞典:基于通用的英語詞典、日語詞典、教科書等指定單詞在文檔中出現(xiàn)的出現(xiàn)頻率,并且對具有較高出現(xiàn)頻率的單詞分配較短的代碼。注意,靜態(tài)詞典121對應(yīng)于圖2中的靜態(tài)詞典s0。
動態(tài)詞典122是這樣的詞典:未被登記在靜態(tài)詞典121中的單詞與動態(tài)分配的動態(tài)碼(代碼)彼此對應(yīng)。注意,動態(tài)詞典122對應(yīng)于圖4中的動態(tài)詞典d0。對動態(tài)詞典122的描述與圖4中的描述相同。因此省略對其的描述。
文件讀取器111將文件f1中的多個(gè)文件作為編碼目標(biāo)讀取到存儲區(qū)域中。文件讀取器111從存儲區(qū)域讀取目標(biāo)文件,并且對所讀取的目標(biāo)文件執(zhí)行詞匯分析。文件讀取器111將作為詞匯分析結(jié)果的各個(gè)單詞按順序輸出到編碼單元112。
編碼單元112基于靜態(tài)詞典121和動態(tài)詞典122對單詞進(jìn)行編碼。例如,編碼單元112確定從文件讀取器111輸出的單詞的字符串是否已被登記在靜態(tài)詞典121中。作為示例,編碼單元112確定目標(biāo)單詞的字符串是否命中靜態(tài)詞典121的位過濾器。當(dāng)目標(biāo)單詞的字符串已被登記在靜態(tài)詞典121中時(shí),編碼單元112基于靜態(tài)詞典121對單詞的字符串進(jìn)行編碼。作為示例,編碼單元112基于靜態(tài)詞典121將單詞的字符串編碼成與單詞的字符串對應(yīng)的靜態(tài)碼(單詞代碼)。編碼單元112將通過編碼提供的單詞代碼輸出到二維索引生成器113。
當(dāng)目標(biāo)單詞的字符串尚未被登記在靜態(tài)詞典121中時(shí),編碼單元112基于動態(tài)詞典122對單詞的字符串進(jìn)行編碼。作為示例,編碼單元112確定單詞的字符串是否已經(jīng)存儲在動態(tài)詞典122的緩沖區(qū)部分d1中。當(dāng)單詞的字符串尚未被存儲在動態(tài)詞典122的緩沖區(qū)部分d1中時(shí),編碼單元112將單詞的字符串存儲在緩沖區(qū)部分d1中,并且將單詞的字符串被存儲的存儲位置和所存儲的數(shù)據(jù)長度存儲在地址表d2中。編碼單元112將單詞的字符串編碼成地址表d2中的與單詞的字符串對應(yīng)的動態(tài)碼(單詞代碼)。當(dāng)單詞的字符串已被存儲在動態(tài)詞典122的緩沖區(qū)部分d1中時(shí),編碼單元112將單詞的字符串編碼成與單詞的字符串對應(yīng)的動態(tài)碼(單詞代碼)。編碼單元112將包含通過編碼而提供的單詞代碼以及由單詞代碼指示的單詞的位置的各條信息輸出到二維索引生成器113和三維索引生成器114。
二維索引生成器113基于目標(biāo)文件的文件id和通過編碼提供的單詞代碼來生成二維散列索引123。例如,二維索引生成器113接收從編碼單元112輸出的信息。二維索引生成器113基于接收到的各條信息使用基數(shù)α和基數(shù)β針對目標(biāo)文件的文件id對與單詞代碼對應(yīng)的位圖的位進(jìn)行散列,并且將“1”設(shè)定到這些位。也就是說,二維索引生成器113將針對目標(biāo)文件存在或不存在由單詞代碼所指示的單詞設(shè)定到二維散列索引123。
作為示例,二維索引生成器113基于與單詞id(單詞代碼)對應(yīng)的各個(gè)位圖的兩個(gè)散列值(基數(shù))來生成散列位圖。也就是說,二維索引生成器113按照從散列位圖的第0位到第(基數(shù)-1)位的順序從位圖的第0位開始設(shè)定各個(gè)位。然后,二維索引生成器113再次返回到散列位圖的第0位,并且將通過與已被設(shè)定到散列位圖的值進(jìn)行“或”運(yùn)算而計(jì)算出的值設(shè)定到散列位圖。當(dāng)二維索引生成器113針對與所有單詞id對應(yīng)的位圖生成散列位圖時(shí),二維索引生成器113將通過采集所生成的散列位圖而提供的二維散列索引123存儲在存儲單元120中。
三維索引生成器114基于目標(biāo)文件的文件id、通過編碼而提供的單詞代碼以及由單詞代碼指示的單詞的位置來生成三維散列索引124。例如,三維索引生成器114接收從編碼單元112輸出的各條信息。三維索引生成器114基于接收到的各條信息使用基數(shù)α和基數(shù)β針對由單詞代碼指示的單詞的位置對與單詞代碼和目標(biāo)文件的文件id對應(yīng)的位圖的位進(jìn)行散列,并且將“1”設(shè)定到這些位。即,三維索引生成器114針對目標(biāo)文件將單詞代碼和由單詞代碼指示的單詞的位置設(shè)定成三維散列索引124。
散列位圖生成方法與針對二維索引生成器113所描述的方法相同,因此省略對其的描述。
實(shí)施方式中的索引生成處理的處理過程
接著,將參照圖10來描述本實(shí)施方式中的索引生成處理的處理過程。圖10是示出實(shí)施方式中的索引生成處理的流程圖的示例的圖。
如圖10所示,索引生成裝置110執(zhí)行預(yù)處理(步驟s11)。例如,索引生成裝置110確保存儲單元120中的各種存儲區(qū)域。
索引生成裝置110從文件f1中的目標(biāo)文件中讀取出一個(gè)目標(biāo)文件作為編碼目標(biāo),并且將所讀取的目標(biāo)文件存儲在用于讀取的存儲區(qū)域中(步驟s12)。索引生成裝置110對目標(biāo)文件執(zhí)行詞匯分析(步驟s12a)。
索引生成裝置110從文件頭中讀取出單詞的字符串作為詞匯分析的結(jié)果(步驟s13)。索引生成裝置110對所讀取的單詞進(jìn)行編碼(步驟s14)。注意,后面將描述對單詞的編碼處理。然后,索引生成裝置110將通過對單詞進(jìn)行的編碼處理而輸出的單詞代碼寫入到與目標(biāo)文件對應(yīng)的經(jīng)編碼的數(shù)據(jù)的存儲區(qū)域中(步驟s15)。
隨后,索引生成裝置110使用基數(shù)α和基數(shù)β針對指示目標(biāo)文件的文件id對與單詞代碼對應(yīng)的位圖的位進(jìn)行散列,并且將“1”設(shè)定到該位(步驟s16)。例如,索引生成裝置110針對基于基數(shù)α的散列位圖將位圖的各個(gè)位的值設(shè)定到與通過將位圖的各個(gè)位的位置除以基數(shù)α而計(jì)算出的余數(shù)相匹配的位置。索引生成裝置110針對基于基數(shù)β的散列位圖將位圖的各個(gè)位的值設(shè)定到與通過將位圖的各個(gè)位的位置除以基數(shù)β而計(jì)算出的余數(shù)相匹配的位置。也就是說,索引生成裝置110按照從散列位圖的第0位到第(基數(shù)-1)位的順序從位圖的第0位開始設(shè)定各個(gè)位,并且再次返回到散列位圖的第0位,并且將第0位設(shè)定成通過“或”運(yùn)算而提供的結(jié)果。換言之,索引生成裝置110將針對目標(biāo)文件存在或不存在由單詞代碼指示的單詞設(shè)定到二維位圖索引123。
隨后,索引生成裝置110使用基數(shù)α和基數(shù)β,針對由單詞代碼指示的單詞的位置對與單詞代碼和文件id對應(yīng)的位圖的位進(jìn)行散列,并且將“1”設(shè)定到該位(步驟s17)。也就是說,索引生成裝置110將單詞代碼和由單詞代碼指示的單詞針對目標(biāo)文件的位置設(shè)定到三維散列索引124。
索引生成裝置110確定該處理是否到達(dá)目標(biāo)文件的終結(jié)點(diǎn)(步驟s18)。當(dāng)確定該處理未到達(dá)目標(biāo)文件的終結(jié)點(diǎn)時(shí)(在步驟s18處為“否”),索引生成裝置110轉(zhuǎn)移到步驟s13,以讀取出目標(biāo)文件的下一個(gè)單詞。
另一方面,當(dāng)確定該處理到達(dá)目標(biāo)文件的終結(jié)點(diǎn)時(shí)(在步驟s18處為“是”),索引生成裝置110確定是否存在未被編碼的目標(biāo)文件(步驟s19)。當(dāng)確定存在未被編碼的目標(biāo)文件時(shí)(步驟s19處為“是”),索引生成裝置110轉(zhuǎn)移到步驟s12,以對下一個(gè)目標(biāo)文件進(jìn)行編碼。
當(dāng)確定不存在未被編碼的目標(biāo)文件時(shí)(在步驟s19處為“否”),索引生成裝置110將通過采集所生成的散列位圖而提供的二維散列索引123存儲在存儲單元120中。索引生成裝置110將通過采集所生成的散列位圖而提供的三維散列索引124存儲在存儲單元120中(步驟s20)。然后,索引生成裝置110結(jié)束索引生成處理。
編碼處理的處理過程
接著,將參照圖11來描述本實(shí)施方式中的編碼處理的處理過程。圖11是示出了實(shí)施方式中的編碼處理的流程圖的示例的圖。假設(shè)索引生成裝置110已經(jīng)接收到單詞的字符串。
如圖11所示,已經(jīng)接收到單詞的字符串的索引生成裝置110確定單詞的字符串是否已被登記在靜態(tài)詞典121中(步驟s31)。當(dāng)確定單詞的字符串已被登記在靜態(tài)詞典121中(步驟s31處為是)時(shí),索引生成裝置110輸出登記在靜態(tài)詞典121中的靜態(tài)碼(單詞代碼)(步驟s32)。然后,索引生成裝置110結(jié)束編碼處理。
另一方面,當(dāng)確定單詞的字符串尚未被登記在靜態(tài)詞典121中時(shí)(步驟s31處為“否”),索引生成裝置110參考動態(tài)詞典122(步驟s33)。索引生成裝置110確定單詞的字符串是否已被登記在動態(tài)詞典122中(步驟s34)。例如,索引生成裝置110確定單詞的字符串是否已被登記在動態(tài)詞典122的緩沖區(qū)部分d1中。
當(dāng)確定單詞的字符串已被登記在動態(tài)詞典122中時(shí)(在步驟s34處為是),索引生成裝置110轉(zhuǎn)移到步驟s36。
另一方面,當(dāng)確定單詞的字符串尚未被登記在動態(tài)詞典122中時(shí)(步驟s34處為“否”),索引生成裝置110將該單詞的字符串登記在動態(tài)詞典122中(步驟s35)。例如,索引生成裝置110將單詞的字符串存儲在動態(tài)詞典122的緩沖區(qū)部分d1中,并且將存儲單詞的字符串的存儲位置和所存儲的數(shù)據(jù)長度存儲在地址表d2中。然后,索引生成裝置110轉(zhuǎn)移到步驟s36。
在步驟s36處,索引生成裝置110輸出登記在動態(tài)詞典122中的單詞代碼(動態(tài)碼)(步驟s36)。索引生成裝置110將單詞的字符串編碼成例如地址表d2中的與單詞的字符串對應(yīng)的動態(tài)碼。索引生成裝置110輸出通過編碼而提供的動態(tài)碼作為單詞代碼。然后,索引生成裝置110結(jié)束編碼處理。
實(shí)施方式中的檢索裝置的配置
接著,將參照圖12來描述執(zhí)行本實(shí)施方式中的檢索處理的檢索裝置200的配置。圖12是示出了實(shí)施方式中的檢索裝置的配置的功能框圖。如圖12所示,檢索裝置200包括控制器210和存儲單元220。
控制器210是執(zhí)行圖7所示的檢索處理的處理器??刂破?10具有定義各種處理過程的程序以及用于存儲控制數(shù)據(jù)的內(nèi)部存儲器,并且控制器210利用它們來執(zhí)行各種處理??刂破?10例如對應(yīng)于集成電路的電子電路如asic和fpga??商娲?,控制器210對應(yīng)于電子電路如cpu和mpu??刂破?10包括檢索關(guān)鍵字接收器211、第一恢復(fù)單元212、第二恢復(fù)單元213、檢索處理器214和檢索結(jié)果輸出單元215。
存儲單元220對應(yīng)于例如存儲裝置如非易失性半導(dǎo)體存儲元件,如閃存和fram(注冊商標(biāo))。存儲單元220包括二維散列索引221、三維散列索引222、經(jīng)恢復(fù)的位圖223和縮小位圖224。二維散列索引221的結(jié)構(gòu)與通過采集與單詞id對應(yīng)的散列位圖(參見圖5)而提供的結(jié)構(gòu)相同,因此省略對其的描述。三維散列索引222的結(jié)構(gòu)與通過采集與單詞id和文件id對應(yīng)的散列位圖(參見圖5)而提供的結(jié)構(gòu)相同,因此省略對其的描述。經(jīng)恢復(fù)的位圖223的結(jié)構(gòu)與位圖(參見圖8)的結(jié)構(gòu)相同,因此省略對其的描述??s小位圖224的結(jié)構(gòu)與對應(yīng)于每個(gè)單詞的“與”結(jié)果的位圖(參見圖8)的結(jié)構(gòu)相同,因此省略對其的描述。
檢索關(guān)鍵字接收器211接收檢索關(guān)鍵字。檢索關(guān)鍵字接收器211接收例如作為檢索目標(biāo)的單詞作為檢索關(guān)鍵字。作為檢索目標(biāo)的單詞可以是單個(gè)單詞或者多個(gè)單詞。
第一恢復(fù)單元212恢復(fù)與由作為檢索目標(biāo)的單詞指示的單詞id對應(yīng)的散列位圖。例如,第一恢復(fù)單元212通過參考二維散列索引hi1,提取與由檢索關(guān)鍵字接收器211接收的單詞的單詞id對應(yīng)的散列位圖。第一恢復(fù)單元212將所提取的各個(gè)散列位圖展開為位圖(第一恢復(fù)處理)。然后,第一恢復(fù)單元212對通過第一恢復(fù)處理(第二恢復(fù)處理)展開的各個(gè)位圖中的對應(yīng)位置處的位執(zhí)行“與”運(yùn)算?;謴?fù)單元212將作為“與”結(jié)果而提供的位圖保存在經(jīng)恢復(fù)的位圖223中作為恢復(fù)結(jié)果。當(dāng)存在作為檢索目標(biāo)的多個(gè)單詞時(shí),第一恢復(fù)單元212恢復(fù)作為檢索目標(biāo)的各個(gè)單詞的散列位圖,并且將位圖作為恢復(fù)結(jié)果保存在經(jīng)恢復(fù)的位圖223中。
第一恢復(fù)單元212將包含作為檢索目標(biāo)的單詞的文件的文件id輸出到第二恢復(fù)單元213。例如,當(dāng)經(jīng)恢復(fù)的位圖223保存了多個(gè)位圖時(shí),第一恢復(fù)單元212對位圖執(zhí)行“與”運(yùn)算并且將“與”結(jié)果保存在縮小位圖224中。當(dāng)經(jīng)恢復(fù)的位圖223保存了單個(gè)位圖時(shí),第一恢復(fù)單元212將位圖復(fù)制到縮小位圖224中。然后,第一恢復(fù)單元212將縮小位圖224的位指示“1”的文件id輸出到第二恢復(fù)單元213。
第二恢復(fù)單元213恢復(fù)與文件id和由作為檢索目標(biāo)的單詞指示的單詞id對應(yīng)的散列位圖。例如,第二恢復(fù)單元213通過參考三維散列索引hi2,提取與從第一恢復(fù)單元212輸出的文件id和作為檢索目標(biāo)的單詞的單詞id對應(yīng)的散列位圖。第二恢復(fù)單元213將所提取的散列位圖展開為相應(yīng)位圖(第一恢復(fù)處理)。然后,第二恢復(fù)單元213對通過第一恢復(fù)處理(第二恢復(fù)處理)展開的各個(gè)位圖中的對應(yīng)位置處的位執(zhí)行“與”運(yùn)算。第二恢復(fù)單元213將作為“與”結(jié)果的位圖保存在經(jīng)恢復(fù)的位圖223中作為恢復(fù)結(jié)果。
檢索處理器214檢索單詞在包含作為檢索目標(biāo)的單詞的文件中的位置。例如,檢索處理器214提取由第二恢復(fù)單元213保存在經(jīng)恢復(fù)的位圖223中的位圖的位指示“1”的值(位置)。所提取的值(位置)是單詞在包含作為檢索目標(biāo)的單詞的文件中的位置。
檢索結(jié)果輸出單元215將由檢索處理器214檢索的值(位置)連同文件id和由單詞id指示的單詞一起添加到值列表中。然后,檢索結(jié)果輸出單元215輸出值列表作為檢索結(jié)果。
檢索處理的流程圖
圖13是示出了實(shí)施方式中的檢索處理的流程圖的示例的圖。
如圖13所示,檢索裝置200確定是否已經(jīng)接收到作為檢索目標(biāo)的單詞(步驟s41)。當(dāng)確定沒有接收到作為檢索目標(biāo)的單詞時(shí)(步驟s41處為“否”),檢索裝置200重復(fù)確定處理,直到已經(jīng)接收到作為檢索目標(biāo)的單詞為止。
另一方面,當(dāng)確定已經(jīng)接收到作為檢索目標(biāo)的單詞時(shí)(步驟s41處為“是”),檢索裝置200從存儲單元220讀取出二維散列索引221和三維散列索引222(步驟s42)。
檢索裝置200通過參考所讀取的二維散列索引221來選擇與由作為檢索目標(biāo)的單詞指示的單詞id對應(yīng)的散列位圖,并且恢復(fù)所選擇的散列位圖(步驟s43)。檢索裝置200確定是否存在未處理的單詞(步驟s43a)。當(dāng)確定存在未處理的單詞(步驟s43a處為“是”)時(shí),檢索裝置200轉(zhuǎn)移到步驟s43,以處理作為檢索目標(biāo)的下一個(gè)單詞。
另一方面,當(dāng)確定不存在未處理的單詞(步驟s43a處為“否”)并且存在多個(gè)經(jīng)恢復(fù)的位圖時(shí),檢索裝置200對經(jīng)恢復(fù)的位圖執(zhí)行“與”運(yùn)算,并且將“與”結(jié)果保存在縮小位圖224中(步驟s43b)。然后,檢索裝置200獲取縮小位圖224的位指示“1”的文件id(步驟s44)。
檢索裝置200通過參考三維散列索引222來針對所獲取的每個(gè)文件id選擇與單詞id和文件id對應(yīng)的散列位圖,并且恢復(fù)所選擇的散列位圖(步驟s45)。然后,檢索裝置200獲取針對每個(gè)單詞id和每個(gè)文件id的位指示“1”的值(位置)(步驟s46)。
檢索裝置200將單詞id、文件id和值(位置)添加到值列表(步驟s47)。然后,檢索裝置200輸出值列表(步驟s48),并且結(jié)束檢索處理。
使用檢索處理,檢索裝置200可以通過二維散列索引221和三維散列索引222來指定單詞在包含該單詞的文件中的位置。
實(shí)施方式的效果
根據(jù)上述實(shí)施方式,在對各個(gè)輸入文件進(jìn)行詞匯分析的過程中,索引生成裝置100生成關(guān)于存在或不存在各個(gè)關(guān)鍵字以及存在各個(gè)關(guān)鍵字時(shí)各個(gè)關(guān)鍵字針對各個(gè)文件的存在位置的各條信息。然后,索引生成裝置100基于所生成的各條信息來生成關(guān)鍵字和針對各個(gè)文件的位置的索引信息。利用該配置,索引生成裝置100通過對輸入文件執(zhí)行詞匯分析來生成包含關(guān)鍵字和位置的索引信息,從而以壓縮格式一遍生成索引信息。也就是說,索引生成裝置100可以容易地生成與文件、關(guān)鍵字及其位置對應(yīng)的索引信息。
與實(shí)施方式相關(guān)的其他模式
在下文中,將描述對上述實(shí)施方式的一些修改。除了以下修改之外,在不脫離本發(fā)明的主旨的范圍內(nèi)可以適當(dāng)?shù)剡M(jìn)行設(shè)計(jì)上的變化。
在假設(shè)32位寄存器的情況下,本實(shí)施方式中的索引生成裝置100基于散列值(基數(shù))29和31對各個(gè)位圖進(jìn)行散列。在本實(shí)施方式中,一個(gè)位圖具有44位。然而,散列值(基數(shù))29和31是示例,并且散列值不限于此。每個(gè)位圖的位數(shù)也是示例,并且不限于44位。根據(jù)多個(gè)文件中的每個(gè)文件中的單詞的類型數(shù)來確定兩個(gè)散列值(基數(shù))就足夠了。當(dāng)假定單詞的類型數(shù)為例如10,000時(shí),選擇兩個(gè)基數(shù),使得由通過除以一個(gè)基數(shù)計(jì)算出的余數(shù)和通過除以另一個(gè)基數(shù)計(jì)算出的余數(shù)所表達(dá)的二維矩陣的數(shù)目大約為10,000。兩個(gè)基數(shù)是相鄰的質(zhì)數(shù)就足夠了。作為示例,當(dāng)矩陣的數(shù)目為10,000時(shí),所選擇的兩個(gè)質(zhì)數(shù)為97和101。也就是說,基于以下估計(jì)來確定基數(shù):在具有大約為10,000的最小公倍數(shù)的二維矩陣空間中,使用針對特定單詞的一個(gè)散列和另一個(gè)散列計(jì)算出的余數(shù)的組合不與針對其他單詞計(jì)算出的余數(shù)的組合相沖突(交疊)。
在本實(shí)施方式中,索引生成裝置100基于與單詞id對應(yīng)的位圖以及與單詞id和文件id對應(yīng)的位圖中的每一者的兩個(gè)散列值(基數(shù))來生成散列位圖。當(dāng)生成散列位圖時(shí),索引生成裝置100在某些情況下檢測散列沖突(散列噪聲)。在與例如具有超高頻率的單詞對應(yīng)的位圖中,因?yàn)榫哂谐哳l率的單詞存在于多個(gè)文件中,所以多個(gè)位置處的位值被設(shè)定成“1”。當(dāng)位圖被散列時(shí),在一些情況下,以交疊的方式在散列位圖的相同位置處設(shè)定“1”。具有超高頻率的單詞的示例包括“the”和“on”。索引生成裝置100針對散列噪聲執(zhí)行散列沖突監(jiān)測并且通過測量0/1比率或者位圖的劃分來減少散列噪聲就足夠了。當(dāng)在散列位圖中的任何一個(gè)中連續(xù)地發(fā)生沖突時(shí),索引生成裝置100使用存在或不存在與引起沖突的散列位圖對應(yīng)的位圖的信息來對存在與不存在(1/0)之間的比率進(jìn)行計(jì)數(shù)。當(dāng)“1”的比率高于閾值時(shí),索引生成裝置100將與引起沖突的散列位圖對應(yīng)的位圖進(jìn)行分割。作為示例,索引生成裝置100提取與引起沖突的散列位圖對應(yīng)的位圖的偶數(shù)位置處的位,并且新生成位圖。另外,索引生成裝置100提取與引起沖突的散列位圖對應(yīng)的位圖的奇數(shù)位置處的位,并且新生成位圖。然后,索引生成裝置100將所分割的新位圖存儲在例如作為分割目的地的具有低頻率的單詞的區(qū)域中。索引生成裝置100針對兩個(gè)散列位圖中的任何一個(gè)設(shè)定分割目的地。索引生成裝置100基于在位圖分割之后分割目的地處的各個(gè)位圖的兩個(gè)散列值(基數(shù))來生成各個(gè)散列位圖。利用這種配置,即使當(dāng)散列位圖的各條數(shù)據(jù)彼此沖突時(shí),索引生成裝置100也在進(jìn)行散列之前對位圖的第偶數(shù)條數(shù)據(jù)和第奇數(shù)條數(shù)據(jù)進(jìn)行分割和散列,從而避免各條數(shù)據(jù)的沖突。
當(dāng)檢索裝置200接收到作為檢索目標(biāo)的單詞時(shí),檢索單詞在包含該單詞的文件中的位置。也就是說,檢索裝置200使用二維散列索引221恢復(fù)與由作為檢索目標(biāo)而接收的單詞指示的單詞id對應(yīng)的散列位圖,并且獲取其位指示“1”的文件id。檢索裝置200使用三維散列索引222恢復(fù)與單詞id和所獲取的文件id對應(yīng)的散列位圖,并且指定其位指示“1”的值(位置),以檢索作為檢索目標(biāo)的單詞的位置。然而,檢索裝置200不限于此,并且檢索裝置200可以在接收到單詞和單詞的位置時(shí)檢索與作為檢索目標(biāo)的單詞和單詞的位置對應(yīng)的文件。也就是說,檢索裝置200使用三維散列索引222恢復(fù)與由作為檢索目標(biāo)而接收的單詞指示的單詞id和單詞的位置對應(yīng)的散列位圖,并且指定其位指示“1”的文件id。利用該配置,檢索裝置200可以僅通過三維散列索引222來指定與具有單詞和單詞位置二者的檢索條件相匹配的文件。
本實(shí)施方式中的索引生成裝置100基于相鄰的散列值(基數(shù))來生成通過二維地(對單詞軸和文件軸)和三維地(對單詞軸、文件軸和位置軸)應(yīng)用散列而提供的散列索引。然而,索引生成裝置100可以采用塊軸而不是文件軸。也就是說,存在或不存在單詞id的信息可以基于塊。
此外,除非另有規(guī)定,否則可以按照期望改變包含實(shí)施方式中描述的處理過程、控制過程、具體名稱、各種數(shù)據(jù)和參數(shù)的各條信息。
硬件配置
下面描述用于上述實(shí)施方式的硬件和軟件。圖14是示出了計(jì)算機(jī)1的硬件配置的示例的圖。計(jì)算機(jī)1包括處理器301、隨機(jī)存取存儲器(ram)302、只讀存儲器(rom)303、驅(qū)動裝置304、存儲介質(zhì)305、輸入接口(i/f)306、輸入裝置307、輸出接口(i/f)308、輸出裝置309、通信接口(i/f)310、存儲區(qū)域網(wǎng)(san)接口(i/f)311和總線312。各個(gè)硬件經(jīng)由總線312彼此連接。
ram302是可讀寫的存儲器裝置,并且由例如半導(dǎo)體存儲器如靜態(tài)ram(sram)和動態(tài)ram(dram)或者不同于ram的閃存來實(shí)現(xiàn)。rom303還包括可編程rom(prom)。驅(qū)動裝置304是對記錄在存儲介質(zhì)305中的信息執(zhí)行讀取和寫入中的至少任何一種的裝置。在存儲介質(zhì)305中存儲有由驅(qū)動裝置304寫入的信息。存儲介質(zhì)305是例如存儲介質(zhì)如硬盤、閃存如固態(tài)驅(qū)動器(ssd)、光盤(cd)、數(shù)字通用盤(dvd)和藍(lán)光(注冊商標(biāo))盤。計(jì)算機(jī)1包括例如用于多種類型的存儲介質(zhì)中的每一種的驅(qū)動裝置304和存儲介質(zhì)305。
輸入接口306連接到輸入裝置307,并且是將從輸入裝置307接收的輸入信號傳輸?shù)教幚砥?01的電路。輸出接口308連接到輸出裝置309,并且是使輸出裝置309根據(jù)處理器301的指令執(zhí)行輸出的電路。通信接口310是控制通過網(wǎng)絡(luò)3進(jìn)行的通信的電路。通信接口310是例如網(wǎng)絡(luò)接口卡(nic)。san接口311是控制使用存儲區(qū)域網(wǎng)絡(luò)與連接到計(jì)算機(jī)1的存儲裝置進(jìn)行的通信的電路。san接口311是例如主機(jī)總線適配器(hba)。
輸入裝置307是根據(jù)操作來傳輸輸入信號的裝置。輸入裝置是例如按鍵裝置如鍵盤和安裝在計(jì)算機(jī)1的主體上的按鈕或者定點(diǎn)裝置如鼠標(biāo)和觸摸面板。輸出裝置309是根據(jù)計(jì)算機(jī)1的控制來輸出信息的裝置。輸出裝置309是例如圖像輸出裝置(顯示裝置)如顯示器或者音頻輸出裝置如揚(yáng)聲器。例如,輸入輸出裝置如觸摸屏被用作輸入裝置307和輸出裝置309。輸入裝置307和輸出裝置309可以與計(jì)算機(jī)1集成在一起,或者可以是例如從外部連接到計(jì)算機(jī)1而不被包括在計(jì)算機(jī)1中的裝置。
例如,處理器301將存儲在rom303和存儲介質(zhì)305中的程序讀取到ram302中,并且根據(jù)所讀取的程序的過程來執(zhí)行控制器110和210的各個(gè)處理。在這種情況下,ram302被用作處理器301的工作區(qū)域。在rom303和存儲介質(zhì)305中存儲有程序文件(后面將描述的應(yīng)用程序24、中間件23、os22等)和數(shù)據(jù)文件(例如,靜態(tài)詞典121、二維散列索引123和三維散列索引124),并且ram302被用作處理器301的工作區(qū)域以實(shí)現(xiàn)存儲單元120和220的功能。將參照圖15來描述處理器301讀取出的程序。
圖15是示出了在計(jì)算機(jī)中運(yùn)行的程序的配置的示例的圖。在計(jì)算機(jī)1中,運(yùn)行著控制圖15所示的硬件組hw21(301至312)的操作系統(tǒng)(os)22。處理器301根據(jù)os22來運(yùn)行進(jìn)程,以控制和管理硬件組hw21,使得硬件組21根據(jù)應(yīng)用程序ap24或中間件mw23來執(zhí)行各個(gè)處理。此外,在計(jì)算機(jī)1中,中間件mw23或應(yīng)用程序ap24被讀取到ram302中以由處理器301執(zhí)行。
當(dāng)調(diào)用索引生成功能以實(shí)現(xiàn)控制器110的功能時(shí),處理器301基于中間件23或應(yīng)用程序24的至少一部分來執(zhí)行各個(gè)處理(通過基于os22針對各個(gè)處理來控制硬件組21)。當(dāng)調(diào)用檢索功能以實(shí)現(xiàn)控制器210的功能時(shí),處理器301基于中間件23或應(yīng)用程序24的至少一部分來執(zhí)行各個(gè)處理(通過基于os22針對各個(gè)處理來控制硬件組21)。編碼功能和檢索功能可以被包括在應(yīng)用程序24本身中,或者可以是根據(jù)應(yīng)用程序24而被調(diào)用以執(zhí)行的中間件23的一部分。
圖16是示出了實(shí)施方式中的系統(tǒng)中的裝置的配置的示例的圖。圖16中的系統(tǒng)包括計(jì)算機(jī)1a、計(jì)算機(jī)1b、基站2和網(wǎng)絡(luò)3。計(jì)算機(jī)1a以無線方式或有線方式連接到與計(jì)算機(jī)1b連接的網(wǎng)絡(luò)3。
索引生成裝置100和檢索裝置200可以被包括在圖16所示的計(jì)算機(jī)1a或計(jì)算機(jī)1b中的任一個(gè)中。可以采用其中計(jì)算機(jī)1b具有索引生成裝置100的功能而計(jì)算機(jī)1a具有檢索裝置200的功能的配置,或者可以采用其中計(jì)算機(jī)1a具有索引生成裝置100的功能而計(jì)算機(jī)1b具有檢索裝置200的功能的配置??商娲兀?jì)算機(jī)1a和計(jì)算機(jī)1b二者都可以具有索引生成裝置100的功能和檢索裝置200的功能。
根據(jù)一個(gè)方面,可以容易地以壓縮格式一遍生成包含文件、關(guān)鍵字及其出現(xiàn)位置的索引。