本發(fā)明涉及計算機信息技術領域,特別涉及數(shù)據(jù)庫術語檢索的方法、裝置及終端。
背景技術:
當前計算機輔助翻譯是提高翻譯一致性和效率的重要手段,它要求軟件能夠不斷地記憶最新的術語及語料,并在后續(xù)的翻譯流程中能夠及時地調出滿足相應條件的術語及語料以供選擇。
隨著術語和語料規(guī)模的不斷擴大,數(shù)據(jù)庫也原來越大,遍歷數(shù)據(jù)庫進行術語的檢索,獲得對應的術語信息所需花費的時間就會越來越多,可見,目前術語檢索的效率比較低。
技術實現(xiàn)要素:
本發(fā)明實施例提供了一種數(shù)據(jù)庫術語檢索的方法、裝置及終端。為了對披露的實施例的一些方面有一個基本的理解,下面給出了簡單的概括。該概括部分不是泛泛評述,也不是要確定關鍵/重要組成元素或描繪這些實施例的保護范圍。其唯一目的是用簡單的形式呈現(xiàn)一些概念,以此作為后面的詳細說明的序言。
根據(jù)本發(fā)明實施例的第一方面,提供了一種數(shù)據(jù)庫術語檢索的方法,包括:
獲取待檢索術語的檢索信息;
根據(jù)所述數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與所述檢索信息對應的術語信息;
其中,所述數(shù)據(jù)庫的雙數(shù)組字典樹索引的構建過程包括:
從所述數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將所述術語集合中的術語進行排序,獲得排序后的第一術語集合;
調用雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引,其中,所述雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為基礎數(shù)組base[]和校驗數(shù)值check[]。
本發(fā)明一實施例中,所述調用雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引包括:
步驟一:初始化雙數(shù)組字典樹根節(jié)點,并將所述根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0;
步驟二:對于所述當前節(jié)點的一群兄弟節(jié)點,確定對應的插入位置,其中,所述插入位置為begin值,且check[begin+a1…an]==0,a1…an是所述兄弟節(jié)點中的n個節(jié)點對應的字符編碼值;
步驟三:將所述兄弟節(jié)點的check確定為check[begin+a1…an]=begin;
步驟四:若所述兄弟節(jié)點中的當前節(jié)點沒有子節(jié)點,確定所述當前節(jié)點的base為負值;若所述兄弟節(jié)點中的當前節(jié)點有子節(jié)點,確定所述當前節(jié)點的兄弟節(jié)點,并迭代跳轉到步驟二中;
步驟五:在所述插入位置插入第一術語集合中對應的術語,形所述雙數(shù)組字典樹索引。
本發(fā)明一實施例中,所述調用雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引還包括:
生成索引輔助樹,所述索引輔助樹的每個節(jié)點包括:字符編碼值、字符在字符串中的深度、字符的最左子節(jié)點的位置值,字符的最右子節(jié)點的位置值,字符串路徑的結束標識信息。
本發(fā)明一實施例中,所述檢索與所述檢索信息對應的術語信息之前,還包括:
將所述索引輔助樹加載到內存中。
本發(fā)明一實施例中,所述檢索與所述檢索信息對應的術語信息包括:
根據(jù)公式(1),在所述數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與所述檢索信息對應的術語;
確定所述查找到的術語在所述雙數(shù)組字典樹的位置值;
在預設的與所述數(shù)據(jù)庫對應的哈希對應關系中,確定與所述位置值對應的所述術語的輔助信息,其中,所述輔助信息包括:術語的原文、術語的譯文、術語的屬性信息等中的至少一種;
其中,公式(1)為:
base[s]+c=t
check[t]=s(1)
s代表原狀態(tài),t代表目標狀態(tài),c代表狀態(tài)間轉移的變化值,即字符編碼值。
根據(jù)本發(fā)明實施例的第二方面,提供一種數(shù)據(jù)庫術語檢索的裝置,包括:
獲取單元,用于獲取待檢索術語的檢索信息;
檢索單元,用于根據(jù)所述數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與所述檢索信息對應的術語信息;
構建單元,用于從所述數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將所述術語集合中的術語進行排序,獲得排序后的第一術語集合;并調用雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引,其中,所述雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為基礎數(shù)組base[]和校驗數(shù)組check[]。
本發(fā)明一實施例中,所述構建單元,還用于初始化雙數(shù)組字典樹根節(jié)點,并將所述根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0;對于所述當前節(jié)點的一群兄弟節(jié)點,確定對應的插入位置,其中,所述插入位置為begin值,且check[begin+a1…an]==0,a1…an是所述兄弟節(jié)點中的n個節(jié)點對應的字符編碼值;將所述兄弟節(jié)點的check確定為check[begin+a1…an]=begin;若所述兄弟節(jié)點中的當前節(jié)點沒有子節(jié)點,確定所述當前節(jié)點的base為負值;若所述兄弟節(jié)點中的當前節(jié)點有子節(jié)點,確定所述當前節(jié)點的兄弟節(jié)點,并繼續(xù)確定所述兄弟節(jié)點對應的插入位置;在所述插入位置插入第一術語集合中對應的術語,形所述雙數(shù)組字典樹索引。
本發(fā)明一實施例中,還包括:加載單元;其中,
所述構建單元,還用于生成索引輔助樹,所述索引輔助樹的每個節(jié)點包括:字符編碼值、字符在字符串中的深度、字符的最左子節(jié)點的位置值,字符的最右子節(jié)點的位置值,字符串路徑的結束標識信息。
所述加載單元,用于將所述索引輔助樹加載到內存中。
本發(fā)明一實施例中,所述檢索單元,還用于根據(jù)公式(1),在所述數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與所述檢索信息對應的術語;確定所述查找到的術語在所述雙數(shù)組字典樹的位置值;在預設的與所述數(shù)據(jù)庫對應的哈希對應關系中,確定與所述位置值對應的所述術語的輔助信息,其中,所述輔助信息包括:術語的原文、術語的譯文、術語的屬性信息等中的至少一種;其中,公式(1)為:
base[s]+c=t
check[t]=s(1)
其中,s代表原狀態(tài),t代表目標狀態(tài),c代表狀態(tài)間轉移的變化值,即字符編碼值。
根據(jù)本發(fā)明實施例的第三方面,提供數(shù)據(jù)庫術語檢索的裝置,被配置為終端,包括:
處理器;
被配置為存儲處理器可執(zhí)行指令的存儲器;
其中,處理器被配置為:
獲取待檢索術語的檢索信息;
根據(jù)所述數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與所述檢索信息對應的術語信息;
其中,所述數(shù)據(jù)庫的雙數(shù)組字典樹索引的構建過程包括:
從所述數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將所述術語集合中的術語進行排序,獲得排序后的第一術語集合;
調用darts雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引,其中,所述雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為基礎數(shù)組base[]和校驗數(shù)組check[]。
本發(fā)明實施例提供的技術方案可以包括以下有益效果:
本發(fā)明實施例中,構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引,這樣,可根據(jù)雙數(shù)組字典樹索引進行術語的檢索,極大地提高了術語檢索的速度。并且,調用雙數(shù)組字典樹來構建數(shù)據(jù)庫的索引,可提高插入術語的速度,降低內存的開銷,同時可避免動態(tài)添加數(shù)據(jù)的過程中對檢索速度的影響。
應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)庫術語檢索方法的流程示意圖;
圖2是根據(jù)一示例性實施例示出的形成雙數(shù)組字典樹索引的流程示意圖;
圖3是根據(jù)一示例性實施例示出的雙數(shù)組字典樹的結構示意圖;
圖4是根據(jù)一示例性實施例示出的一種數(shù)據(jù)庫術語檢索裝置的框圖;
圖5是根據(jù)一示例性實施例示出的一種數(shù)據(jù)庫術語檢索裝置的框圖。
具體實施方式
以下描述和附圖充分地示出本發(fā)明的具體實施方案,以使本領域的技術人員能夠實踐它們。實施例僅代表可能的變化。除非明確要求,否則單獨的部件和功能是可選的,并且操作的順序可以變化。一些實施方案的部分和特征可以被包括在或替換其他實施方案的部分和特征。本發(fā)明的實施方案的范圍包括權利要求書的整個范圍,以及權利要求書的所有可獲得的等同物。在本文中,各實施方案可以被單獨地或總地用術語“發(fā)明”來表示,這僅僅是為了方便,并且如果事實上公開了超過一個的發(fā)明,不是要自動地限制該應用的范圍為任何單個發(fā)明或發(fā)明構思。本文中,諸如第一和第二等之類的關系術語僅僅用于將一個實體或者操作與另一個實體或操作區(qū)分開來,而不要求或者暗示這些實體或操作之間存在任何實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素。本文中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的結構、產品等而言,由于其與實施例公開的部分相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
計算機輔助翻譯是一種越來越普遍使用的軟件應用,在該應用對應一個龐大的數(shù)據(jù)庫系統(tǒng),在數(shù)據(jù)庫中存儲了大量的術語以及輔助信息,一般,可采用哈希對應關系來保存這些術語以及輔助信息。由于數(shù)據(jù)庫信息量巨大,傳統(tǒng)的檢索術語過程比較費時,同時還需花銷大量的內存。而本發(fā)明實施例中,可構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引,這樣,可根據(jù)雙數(shù)組字典樹索引進行術語的檢索,極大地提高了術語檢索的速度。并且,調用雙數(shù)組字典樹來構建數(shù)據(jù)庫的索引,可提高插入術語的速度,降低內存的開銷,同時可避免動態(tài)添加數(shù)據(jù)的過程中對檢索速度的影響。
圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)庫術語檢索方法的流程圖。如圖1所示,如圖1所示,數(shù)據(jù)庫術語檢索的過程包括:
步驟101:獲取待檢索術語的檢索信息。
待檢索術語的檢索信息可包括待檢索術語的關鍵詞(key)、前綴、后綴等中一種或多種。用戶輸入待檢索術語的檢索信息后,即可獲得待檢索術語的檢索信息。當然,也可通過網(wǎng)絡傳輸?shù)全@取待檢索術語的檢索信息。
步驟102:根據(jù)數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與檢索信息對應的術語信息。
本發(fā)明實施例中,由于數(shù)據(jù)庫信息量巨大,因此,可構建該數(shù)據(jù)庫的雙數(shù)組字典樹索引,從而,可根據(jù)數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與檢索信息對應的術語信息。
本發(fā)明實施例中,可從數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將術語集合中的術語進行排序,獲得排序后的第一術語集合,然后,通過調用雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引。這里,雙數(shù)組字典樹可為雙數(shù)組字典樹系統(tǒng)(darts,double-arraytriesystem),即調用darts雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引。
由于數(shù)據(jù)庫可以是本地數(shù)據(jù)庫,也可以是網(wǎng)絡存儲數(shù)據(jù)庫,因此,可遍歷數(shù)據(jù)庫獲得術語集合,或者通過網(wǎng)絡爬蟲等網(wǎng)絡技術獲得術語集合。即根據(jù)待插入的術語,組成術語集合。獲取術語集合后,還需進一步對術語進行排序,從而,得到排序后的術語集合。這里,可根據(jù)字典序,將術語集合中的術語進行排序,獲得排序后的第一術語集合。一般,可采用程序標準庫中的排序函數(shù)即可對術語集合中的術語排序,獲得按字典序排序后的第一術語集合。
然后,調用darts雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引。其中,雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為基礎數(shù)組base[]和校驗數(shù)組check[]。并且,雙數(shù)組字典樹的前后節(jié)點之間的關系滿足以下公式:
對于一個接收字符c從狀態(tài)s移動到t的轉移,在雙數(shù)組中保存的條件是:
check[base[s]+c]=s
base[s]+c=t
其中,s和t均為狀態(tài),s代表原狀態(tài),t代表目標狀態(tài)。
構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引后,可檢索與檢索信息對應的術語信息。由于雙數(shù)組字典樹的前后節(jié)點之間的關系滿足上述公式,因此,在檢索的過程中,可根據(jù)公式(1),在數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與檢索信息對應的術語。然后,確定查找到的術語在darts雙數(shù)組字典樹的位置值,并在預設的與數(shù)據(jù)庫對應的哈希對應關系中,確定與位置值對應的術語的輔助信息,其中,輔助信息包括:術語的原文、術語的譯文、術語的屬性信息等中的至少一種。位置值可為pos值。
其中,公式(1)為:
base[s]+c=t
check[t]=s(1)
s代表原狀態(tài),t代表目標狀態(tài),c代表狀態(tài)間轉移的變化值,即字符編碼值。
由于雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,并雙數(shù)組字典樹的前后節(jié)點之間的關系滿足預設的公式,因此,可根據(jù)公式(1)描述的狀態(tài)轉移關系,在構建的數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與檢索信息對應的術語。而數(shù)據(jù)庫中,采用哈希對應關系來保存這些術語以及輔助信息,因此,查找到與檢索信息對應的術語后,即可確定該術語對應的pos值,從而,可在預設的與數(shù)據(jù)庫對應的哈希對應關系中,確定與pos值對應的術語的輔助信息,即可完成對術語檢索。
本發(fā)明實施例中,由于調用darts雙數(shù)組字典樹插入術語,形成雙數(shù)組字典樹索引后,才可在進行術語檢索時,提高術語檢索的速度。并且,數(shù)據(jù)庫可是一個動態(tài)更新的數(shù)據(jù)庫,可進行術語的動態(tài)插入,因此,構建數(shù)據(jù)庫的雙數(shù)組字典樹索引的過程,可與根據(jù)數(shù)據(jù)庫的雙數(shù)組字典樹索引進行術語檢索的過程是并行。這樣,數(shù)據(jù)庫的檢索與術語插入在同一時間操作的是同一個集合,甚至同一行記錄時,等待時間的長短取決于數(shù)據(jù)庫當前執(zhí)行的效率。從而,提高了插入術語的速度,即可降低內存的開銷。同時可避免動態(tài)添加數(shù)據(jù)的過程中對檢索速度的影響。因此,調用雙數(shù)組字典樹插入術語,形成雙數(shù)組字典樹索引的過程是必不可少的。
圖2是根據(jù)一示例性實施例示出的形成雙數(shù)組字典樹索引的流程示意圖,如圖2所示,形成過程包括:
步驟201:初始化雙數(shù)組字典樹根節(jié)點,并將根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0。
圖3是根據(jù)一示例性實施例示出的雙數(shù)組字典樹的結構示意圖。如圖3所示,雙數(shù)組字典樹中包括:根節(jié)點(root),根節(jié)點下面有兩個或多個子節(jié)點(child),而對于其中一個,兩個或多個子節(jié)點,該子節(jié)點下還有一個、兩個或多個子節(jié)點,這樣,一級一級發(fā)散,形成了雙數(shù)組字典樹。
這里,可初始化雙數(shù)組字典樹根節(jié)點,其中,base[0]=1;check[0]=0。然后,將根節(jié)點確定為當前節(jié)點,即從根節(jié)點開始迭代跳轉。
步驟202:對于當前節(jié)點的一群兄弟節(jié)點,確定對應的插入位置,其中,插入位置為begin值,且check[begin+a1…an]==0,a1…an是兄弟節(jié)點中的n個節(jié)點對應的字符編碼值。
當前節(jié)點為根節(jié)點時,如圖3所示,根節(jié)點下有一群子節(jié)點,這些子節(jié)點組成了兄弟節(jié)點,他們之間是平行關系,需確定對應的插入位置??筛鶕?jù)check[begin+a1…an]==0,a1…an是兄弟節(jié)點中的n個節(jié)點對應的字符編碼值,來確定begin,而插入位置即為begin值。
當然,若當前節(jié)點為其他節(jié)點,例如,圖3中陰影對應的節(jié)點時,它也有子節(jié)點,也形成了兄弟節(jié)點,同樣,可根據(jù)check[begin+a1…an]==0來確定對應的插入位置。
步驟203:將兄弟節(jié)點的check確定為check[begin+a1…an]=begin。
步驟204:從兄弟節(jié)點中確定一個節(jié)點為當前節(jié)點。
步驟205:判斷當前節(jié)點是否有子節(jié)點?若有,執(zhí)行步驟206,否則,執(zhí)行步驟207。
步驟206:確定前節(jié)點的兄弟節(jié)點,并返回步驟202。
步驟207:確定當前節(jié)點的base為負值。
由于當前節(jié)點沒有子節(jié)點,即該當前節(jié)點為葉子節(jié)點,因此,當前節(jié)點的base為負值。
步驟208:兄弟節(jié)點中是否有未選擇的節(jié)點?若有,返回步驟204,否則,執(zhí)行步驟209。
步驟209:在插入位置插入第一術語集合中對應的術語,形雙數(shù)組字典樹索引。
確定了插入位置后,即可插入對應的術語,形成雙數(shù)組字典樹索引。當然,也可在步驟202中,確定了一個插入位置,及時插入對應的術語。
本發(fā)明實施例中,可由步驟202-208形成了雙數(shù)組字典樹的迭代跳轉過程,這樣,雙數(shù)組字典樹的插入位置上都可插入對應的術語,形成雙數(shù)組字典樹索引。因此,調用darts雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引包括:步驟一:初始化雙數(shù)組字典樹根節(jié)點,并將根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0;步驟二:對于當前節(jié)點的一群兄弟節(jié)點,確定對應的插入位置,其中,插入位置為begin值,且check[begin+a1…an]==0,a1…an是兄弟節(jié)點中的n個節(jié)點對應的字符編碼值;步驟三:將兄弟節(jié)點的check確定為check[begin+a1…an]=begin;步驟四:若兄弟節(jié)點中的當前節(jié)點沒有子節(jié)點,確定當前節(jié)點的base為負值;若兄弟節(jié)點中的當前節(jié)點有子節(jié)點,確定當前節(jié)點的兄弟節(jié)點,并迭代跳轉到步驟二中;步驟五:在插入位置插入第一術語集合中對應的術語,形雙數(shù)組字典樹索引。
由于在構建數(shù)據(jù)庫的雙數(shù)組字典樹索引時,可獲得每個節(jié)點的信息,因此,調用雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引還包括:生成索引輔助樹,索引輔助樹的每個節(jié)點包括:字符編碼值、字符在字符串中的深度、字符的最左子節(jié)點的位置值,字符的最右子節(jié)點的位置值,字符串路徑的結束標識信息。
如圖3所示的雙數(shù)組字典樹,其中,root根節(jié)點,它的字符編碼值(code)為0,字符在字符串中的深度(depth)為0,字符的最左子節(jié)點的位置值(left)為0,字符的最右子節(jié)點的位置值(right)為最后一條術語在已排好序的術語集合中的位置。然后,依此遍歷每個術語,對于每個術語依此遍歷它里面的字符,每個字符分配一個節(jié)點(node),節(jié)點里code值為當前字符的編碼,為節(jié)省后續(xù)生成的空間,該編碼可以減去一個偏移值,以獲得較小的數(shù)據(jù),depth為該字符在術語中的位置(從1開始),left為該節(jié)點最左的位置值減1,right為該節(jié)點最右的子節(jié)點的位置值。如果是葉子節(jié)點,那么它的code值為0,depth為字符串的長度,left為該節(jié)點的父節(jié)點的left值,right值為父節(jié)點的left值加1。一般,雙數(shù)組字典樹中,葉子節(jié)點是沒有子節(jié)點的節(jié)點,這樣,沿索引輔助樹某個路徑遍歷字符串時,走到葉子節(jié)點就沒有可以繼續(xù)的節(jié)點了,因此,字符串路徑的結束標識信息可為該節(jié)點對應路徑中葉子節(jié)點的標識信息。
如上述構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引,并生成了索引輔助樹后,可檢索與檢索信息對應的術語信息之前,還包括:將索引輔助樹加載到內存中。
構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引后,可存儲數(shù)據(jù)庫的雙數(shù)組字典樹索。但是,由于雙數(shù)組字典樹的結構復雜,本發(fā)明另一實施例中,構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引后,可不需直接在內存中存儲數(shù)據(jù)庫的雙數(shù)組字典樹索引,只需在檢索與檢索信息對應的術語信息之前,將索引輔助樹加載到內存中,這樣,根據(jù)索引輔助樹,可快速還原和重建雙數(shù)組字典樹索引,從而,進行數(shù)據(jù)庫術語檢索。
可見,通過加載索引輔助樹,可以避免重啟后基于術語集合重建字典樹過慢,進一步提高檢索速度。并且,基于索引輔助樹可以方便地形成新術語插入過程的中間數(shù)據(jù),可提高動態(tài)增長速度,使得動態(tài)插入數(shù)據(jù)變快。
對于同一數(shù)據(jù)庫,術語檢索,以及術語插入可能是同時并行的,即術語檢索與構建數(shù)據(jù)庫的雙數(shù)組字典樹索引的過程可能是并行的,在雙數(shù)組字典樹中插入術語的速度快了,這樣,檢索等待插入的時間變短,自然提高了術語檢索的速度了。
下述為本公開裝置實施例,可以用于執(zhí)行本公開方法實施例。
根據(jù)上述數(shù)據(jù)庫術語檢索的過程,可構建一種數(shù)據(jù)庫術語檢索的裝置。
圖4是根據(jù)一示例性實施例示出的一種數(shù)據(jù)庫術語檢索裝置的框圖。如圖4所示,該裝置包括:獲取單元410、檢索單元420和構建單元430,其中,
獲取單元410,用于獲取待檢索術語的檢索信息。
檢索單元420,用于根據(jù)數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與檢索信息對應的術語信息。
構建單元430,用于從數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將術語集合中的術語進行排序,獲得排序后的第一術語集合;并調用雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引,其中,雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為基礎數(shù)組base[]和校驗數(shù)組check[]。
本發(fā)明一實施例中,構建單元430,還用于初始化雙數(shù)組字典樹根節(jié)點,并將根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0;對于當前節(jié)點的一群兄弟節(jié)點,確定對應的插入位置,其中,插入位置為begin值,且check[begin+a1…an]==0,a1…an是兄弟節(jié)點中的n個節(jié)點對應的字符編碼值;將兄弟節(jié)點的check確定為check[begin+a1…an]=begin;若兄弟節(jié)點中的當前節(jié)點沒有子節(jié)點,確定當前節(jié)點的base為負值;若兄弟節(jié)點中的當前節(jié)點有子節(jié)點,確定當前節(jié)點的兄弟節(jié)點,并繼續(xù)確定兄弟節(jié)點對應的插入位置;在插入位置插入第一術語集合中對應的術語,形雙數(shù)組字典樹索引。
本發(fā)明一實施例中,還包括:加載單元,則該裝置中,
構建單元430,還用于生成索引輔助樹,索引輔助樹的每個節(jié)點包括:字符編碼值、字符在字符串中的深度、字符的最左子節(jié)點的位置值,字符的最右子節(jié)點的位置值,字符串路徑的結束標識信息。
加載單元,用于將索引輔助樹加載到內存中。
本發(fā)明一實施例中,檢索單元420,還用于根據(jù)公式(1),在數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與檢索信息對應的術語;確定查找到的術語在雙數(shù)組字典樹的位置值;在預設的與數(shù)據(jù)庫對應的哈希對應關系中,確定與位置值對應的術語的輔助信息,其中,輔助信息包括:術語的原文、術語的譯文、術語的屬性信息等中的至少一種;其中,公式(1)為:
base[s]+c=t
check[t]=s(1)
其中,s代表原狀態(tài),t代表目標狀態(tài),c代表狀態(tài)間轉移的變化值,即字符編碼值。
下面舉例說明本公開實施例提供的裝置。
圖5是根據(jù)一示例性實施例示出的一種數(shù)據(jù)庫術語檢索裝置的框圖。如圖5所示,該裝置包括:獲取單元410、檢索單元420和構建單元430,還包括加載單元440。
其中,獲取單元410獲取待檢索術語的檢索信息。而檢索單元420可根據(jù)構建單元430構建的數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與檢索信息對應的術語信息。
而構建單元430可從數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將術語集合中的術語進行排序,獲得排序后的第一術語集合;然后,調用雙數(shù)組字典樹插入第一術語集合中的術語,形成雙數(shù)組字典樹索引,其中,雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為base[]和check[]。
如圖3所示的雙數(shù)組字典樹,構建單元430可初始化雙數(shù)組字典樹根節(jié)點,并將根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0。對于其中任意一個節(jié)點的兄弟節(jié)點,都可確定對應的插入位置,具體地,構建單元430可根據(jù)check[begin+a1…an]==0,a1…an是兄弟節(jié)點中的n個節(jié)點對應的字符編碼值,確定begin值,即確定插入位置,也可確對應的check。
當然,對于沒有子節(jié)點的節(jié)點即葉子節(jié)點,構建單元430可確定base為負值。通過迭代跳轉過程,構建單元430可在插入位置插入第一術語集合中對應的術語,形雙數(shù)組字典樹索引。
從而,檢索單元420可根據(jù)公式(1),在數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與檢索信息對應的術語;確定查找到的術語在darts雙數(shù)組字典樹的pos值;在預設的與數(shù)據(jù)庫對應的哈希對應關系中,確定與pos值對應的術語的輔助信息,其中,輔助信息包括:術語的原文、術語的譯文、術語的屬性信息等中的至少一種。
本實施例中,構建單元430還可生成索引輔助樹。從而,加載單元440可將索引輔助樹加載到內存中,這樣,可在檢索時,快速還原數(shù)據(jù)庫的雙數(shù)組字典樹,進一步提高檢索單元420的檢索速度。
可見,本實施例中,構建了數(shù)據(jù)庫的雙數(shù)組字典樹索引,這樣,可根據(jù)雙數(shù)組字典樹索引進行術語的檢索,極大地提高了術語檢索的速度。并且,調用雙數(shù)組字典樹來構建數(shù)據(jù)庫的索引,可提高插入術語的速度,降低內存的開銷,同時可避免動態(tài)添加數(shù)據(jù)的過程中對檢索速度的影響。
本公開實施例提供一種數(shù)據(jù)庫術語檢索的裝置,被配置為終端,包括:
處理器;
被配置為存儲處理器可執(zhí)行指令的存儲器;
其中,處理器被配置為:
獲取待檢索術語的檢索信息;
根據(jù)所述數(shù)據(jù)庫的雙數(shù)組字典樹索引,檢索與所述檢索信息對應的術語信息;
其中,所述數(shù)據(jù)庫的雙數(shù)組字典樹索引的構建過程包括:
從所述數(shù)據(jù)庫中獲取術語集合,并根據(jù)字典序,將所述術語集合中的術語進行排序,獲得排序后的第一術語集合;
調用雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引,其中,所述雙數(shù)組字典樹包括兩個整數(shù)數(shù)組,分別為基礎數(shù)組base[]和校驗數(shù)組check[]。
所述調用雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引包括:
步驟一:初始化雙數(shù)組字典樹根節(jié)點,并將所述根節(jié)點確定為當前節(jié)點,其中,base[0]=1;check[0]=0;
步驟二:對于所述當前節(jié)點的一群兄弟節(jié)點,確定對應的插入位置,其中,所述插入位置為begin值,且check[begin+a1…an]==0,a1…an是所述兄弟節(jié)點中的n個節(jié)點對應的字符編碼值;
步驟三:將所述兄弟節(jié)點的check確定為check[begin+a1…an]=begin;
步驟四:若所述兄弟節(jié)點中的當前節(jié)點沒有子節(jié)點,確定所述當前節(jié)點的base為負值;若所述兄弟節(jié)點中的當前節(jié)點有子節(jié)點,確定所述當前節(jié)點的兄弟節(jié)點,并迭代跳轉到步驟二中;
步驟五:在所述插入位置插入第一術語集合中對應的術語,形所述雙數(shù)組字典樹索引。
所述調用darts雙數(shù)組字典樹插入所述第一術語集合中的術語,形成所述雙數(shù)組字典樹索引還包括:
生成索引輔助樹,所述索引輔助樹的每個節(jié)點包括:字符編碼值、字符在字符串中的深度、字符的最左子節(jié)點的位置值,字符的最右子節(jié)點的位置值,字符串路徑的結束標識信息。
所述檢索與所述檢索信息對應的術語信息之前,還包括:
將所述索引輔助樹加載到內存中。
所述檢索與所述檢索信息對應的術語信息包括:
根據(jù)公式(1),在所述數(shù)據(jù)庫的雙數(shù)組字典樹索引中,查找與所述檢索信息對應的術語;
確定所述查找到的術語在所述雙數(shù)組字典樹的位置值;
在預設的與所述數(shù)據(jù)庫對應的哈希對應關系中,確定與所述位置值對應的所述術語的輔助信息,其中,所述輔助信息包括:術語的原文、術語的譯文、術語的屬性信息等中的至少一種;
其中,公式(1)為:
base[s]+c=t
check[t]=s(1)
s代表原狀態(tài),t代表目標狀態(tài),c代表狀態(tài)間轉移的變化值,即字符編碼值。
本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
應當理解的是,本發(fā)明并不局限于上面已經描述并在附圖中示出的流程及結構,并且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權利要求來限制。