圖書館自動化系統ALEPH 500的索引分析

1 前言

ALEPH 500系統的索引機制、索引類型的設計和運作方式充分反映了系統的靈活性。而且,該系統有關索引和檢索機制的設計運作對於其他圖書館資訊系統和數位圖書館系統也是具有參考價值的。

2 ALEPH 500系統的索引類型與定義方法

2.1 ALEPH 500系統的索引類型

ALEPH 500系統的索引定義可以基於欄位、分欄、分欄的組合或欄位中單個的詞。基於不同的索引類型,系統提供查詢(Find)和瀏覽(Browse)兩種檢索書目記錄的方法。查詢是指用關鍵字檢索記錄,瀏覽是指利用瀏覽標目字順表來查詢記錄。而且系統還支援詞間相鄰、後切查詢、模糊檢索、布林邏輯檢索、多資料庫檢索、指令(CCL)檢索。除此以外,系統還支援簡體、繁體、異體漢字的交互檢索。

為了實現查詢和瀏覽功能,系統設計了直接索引(IND Index)、標目索引(ACC Index)和關鍵字索引(WRD Index)等三種索引類型。一般來說,對書目記錄中具有唯一或幾乎唯一的資訊建立直接索引,比如:系統號、單冊條碼號、ISBN/ISSN、索書號、財產號、訂購號、拼音首字母等。它可以用於記錄瀏覽和查詢,可以實現書目記錄的快速檢索。標目索引是針對一個欄位或分欄的完整內容建立的索引,比如題名、著者、主題等,主要用於書目和權威記錄的流覽,實現記錄定位和權威控制。關鍵字索引是書目記錄中特定欄位的關鍵字,包括著者、題名或主題中的關鍵字等,系統採用位元索引(bitmap)技術實現關鍵字的儲存和檢索,主要用於書目記錄的高效率檢索。

2.2 ALEPH 500系統索引的定義方法

ALEPH 500系統的索引定義是由參數檔的設定來完成的,因此可根據需求由圖書館自由定義各種索引點,並且支援多層次索引點的定義。比如,可以為CNMARC記錄200欄位的$a分欄建立一個“正題名”索引,同時它可與4XX欄位、5XX欄位的相應欄位/分欄一同建立廣義的“題名”索引,還可以成為更為廣泛的“任何欄位關鍵字”索引的組成。在建立索引時還可對直接索引或標目索引進行各種正規化處理(Filing),同時可以通過系統的擴展功能動態地建立虛擬欄位和分欄,並針對虛擬欄位/分欄建立索引。在ALEPH 500系統定義索引有三個基本的步驟。

2.1.1 檢索點定義

在tab00.lng參數檔裏定義索引代碼(第2列)、索引類型(第3列)和名稱(第11列),針對直接索引和標目索引還需定義正規化處理程序(Filing routings)(第5列)。在表1中定義了三個索引,分別是ISB(直接索引)、TIT(標目索引)和WTI(關鍵字索引)。

表1 tab00.eng

2.2.2 檢索點來源欄位/分欄定義
在tab11_ind / tab11_acc / tab11_word參數檔裏定義索引取自的書目記錄中的欄位值。在表2中定義了ISB索引是取自CNMARC記錄010欄位的$a和$z分欄。

表2 tab11_ind

在表3中定義了TIT索引是取自USMARC記錄中與題名相關的多個欄位的$a或$p分欄。在USMARC記錄題名欄位常冠有首冠詞(定冠詞和不定冠詞),這些首冠詞一般不做索引,因此在建索引時,必須把首冠詞的字元位元和首冠詞與檢索詞之間的空字元位元排除。在第8列定義系統進行不排序(Non-filing)處理時的設定,比如,當系統進行不排序處理時,會根據245欄位指標2去排除不做檢索詞的字元數。

表3 tab11_acc

在表4中定義了WTI索引是取自CNMARC記錄中與題名相關的多個欄位的若干分欄。第6列定義了關鍵字正規化處理程序代碼。

表4 tab11_word


2.2.3 檢索點使用定義


在pc_tab_sear.lng參數檔裏定義工作人員在用戶端進行瀏覽和查詢時的可用檢索點。表5中第1列定義的代碼SC表示瀏覽記錄,FI表示查詢記錄,第2列定義檢索庫代碼,第4列定義檢索點名稱,第5列定義索引代碼。

表5 pc_tab_sear.chn

3 正規化處理(Filing

正規化處理是ALEPH 500系統用於設定直接索引和標目索引的索引鍵的一種正規化機制。它基於參數表定義,針對不同類型索引可實現不同的正規化程序的組合處理。典型的正規劃處理程序包括:西文全形半形和大小寫處理、中西文標點符號處理、字元壓縮處理、字串變換處理、中文拼音排序處理等,而且系統館員還可以根據需要增加圖書館專屬的正規化處理程序。

3.1 直接索引的正規化處理


系統提供了一系列的正規化處理程序,用戶可以根據索引的特點及需求去定義使用的正規劃處理程序。在tab00.lng參數檔中定義對索引進行正規劃處理的程序代碼(一組程序的代碼),如何實現對索引的正規劃處理呢?這涉及到另一個參數檔tab_filing,在這個參數檔裏定義對索引進行正規劃處理的具體程序。比如,在上面的直接索引定義中,對ISB索引進行正規劃處理的程序代碼設定為22,在tab_filing中則定義程序代碼22執行的正規劃處理程序。在表6中,程序代碼22下共定義了4個正規劃處理程序,del_subfield用於刪除分欄識別符號,to_lower用於大寫轉小寫字元的轉換,compress_blank用於刪除空格,compress –用於壓縮“-”。經過上面的正規劃處理,可以不用輸入“-”也可以正常查詢的ISBN檢索。

表6 tab_filing


3.2 標目索引的正規化處理


對標目索引進行正規化處理是為了保證標目的唯一性。在瀏覽標目列表中,是根據正規化內容(Filing text)來組織(排序)標目。正規化內容是基於顯示內容(Display text)和正規化內容(Normalized text)經過正規化處理生成的,例如:

Z01_display_text $$aDahl, Roald
Z01_normalized_text $$adahl, roald
Z01_filing_text DAHL ROALD

顯示內容是取自記錄中欄位的內容(去掉結尾的標點符號),正規化內容是對顯示內容進行正規化處理後而得來的,這些正規化處理主要包括對發音字元、標點符號、特殊字元和字母大小寫的處理。正規化內容主要用於系統判斷標目的唯一性。當進行字元變換處理時,還涉及到參數檔tab_character_conversion_line 。例如,對TIT索引進行正規化處理的程序代碼是11,在表7定義程序代碼11具體執行的正規化處理程序。

表7 tab_filing


在表7中D行定義產生顯示內容的正規化程序,N行定義建立正規畫內容的正規化程序,F行定義建立正規化內容的正規化程序。其中有一行正規化程式是char_conv,是根據第4列的程式ID(FILING-KEY-01)進行字元變換。執行字元變換的程序和字元變換表是在參數檔tab_character_conversion_line中定義的,在表8中第1列是程式ID,第4列是程式名稱,第5列是字元變換表。

表8 tab_character_conversion_line



比如,把á變換成 A,在unicode_to_filing_01表中需要定義:
00E1 0041 #LATIN SMALL LETTER A WITH ACUTE

4 關鍵字索引的正規化處理


4.1 關鍵字引的斷字及字元變換


斷字程序是用於關鍵字建立時對關鍵字進行正規化處理的一組程序,是在tab_word_breaking參數檔裏定義的。典型的斷字處理程序包括:中文字詞的斷字處理、標點符號處理、字元壓縮處理、字元變換處理等,而且圖書館還可以根據需要增加圖書館專屬的斷字處理程序。例如,WTI索引的斷字處理程序代碼是01,在表9中定義了01常式執行的一組程序。

表9 tab_word_breaking



在建立關鍵字索引時用到的字元變換程式以及相應的字元變換表也是在tab_character_conversion_line參數檔中定義的。在表10中,第1列常式ID是WORD-FIX,第4列是程式名稱,第5列是使用的字元變換表。字元變換表可由用戶自行定義與維護。

表10 tab_character_conversion_line



比如,把ü變換成u,在unicode_to_word_gen中定義:
00FC 0075 #LATIN SMALL LETTER U WITH DIAERESIS

系統支援多種中文字串的斷字方式,比如: (1) N-Gram的切分方式,即按照固定的漢字單字數目來進行分詞。N可以取1,2,...,分別表示對中文字元串按單字、雙字、多字等方式切分,比如將“數位圖書館”按1-Gram斷字的結果為“數”、“位”、“圖”、“書”、“館”。 (2)斷字方式,按照語言中有意義的最小單位(詞素)進行分詞,即利用系統提供的漢字詞庫,切分出全部有意義的詞素。比如,“數位圖書館”抽取詞索引時將被切分成“數位”、“圖書館”、“數位圖書館”等三個詞。(3) 上述詞切分方式的組合。比如進行1-Gram + 詞切分的組合。

至於圖書館客戶系統中採用何種中文切詞演算法,可由客戶透過參數表設定。此外,ALEPH 500系統在建立索引和進行檢索時採用的中文斷字演算法通常是不一樣的。在抽取索引時,系統需要切取出全部有意義的詞素;而檢索時,系統通常只是提取出最大的詞素,以保證檢索結果的準確性。

4. 2 簡體、繁體、異體漢字的交互檢索


ALEPH 500系統在建立索引或者進行檢索時,都會進行漢字的一致化處理,即把需要抽索引或者進行檢索的字串,利用ALEPH 500系統的漢字屬性字典表把各種不同類型的漢字映射成統一的簡體漢字,從而實現簡體、繁體、異體漢字的交互檢索。

5 索引中的擴展功能


ALEPH 500系統將不同的資訊保存在不同類型的資料庫裏,比如書目記錄是保存在書目資料庫裏(BIB Library),單冊、流通、採訪等資訊是保存在管理資料庫裏(ADM Library)。如果需要在書目記錄裏顯示非書目庫的記錄資訊,或者希望用非書目資訊(比如館藏地)檢索書目庫記錄,系統提供了擴展(Expand)功能來滿足上述需求,擴展資訊可以用於記錄顯示或檢索,通過tab_expand參數檔來定義擴展名稱和擴展程序。例如,需要為一些單冊資訊(分館、館藏地等)建立關鍵字索引,從而實現對相關書目記錄的檢索,見表11,在tab_expand參數檔裏增加如下定義。

表11 tab_expand



使用的擴展程式是expand_doc_bib_z30,這個擴展程式在書目記錄裏建立了兩個虛擬欄位Z30-1(圖書單冊)和Z30-2(期刊單冊)。參數檔expand_doc_bib_z30定義擴展欄位的分欄結構,在表12中,將單冊的分館和館藏地擴展到了虛擬欄位的$1和$2分欄。在tab00.lng、tab11_word和pc_tab_sear.lng參數檔裏完成了索引的定義後,就可用分館或館藏地等檢索點完成對書目記錄的檢索。

表12 expand_doc_bib_z30


6 小結


ALEPH 500系統中有關索引的設定、索引的來源欄位/分欄定義、索引的正規化、索引內容的擴展、以及索引使用等等全部徹底實現了參數化定義的精神。因此客戶可以根據需求自行定義各種檢索點,滿足圖書館工作人員和讀者的檢索需求,充分展現系統的靈活性。
 (韓夏增修;劉育君編修)

原文發表於:
篇名:圖書館集成管理系統ALEPH 500的索引分析
作 者:韓夏 賴偉 吳廷照
作者單位:四川大學,中國成都
期 刊: 現代情報 MODERN INFORMATION
年,卷(期): 2008, 28(3)