接鵬飛
(鹽城市圖書館,江蘇 鹽城 224005)
在信息技術高速發(fā)展的今天,隨著現代圖書館逐步由傳統(tǒng)型向數字化、智能化方向轉變,圖書館的服務模式也呈現出越來越多樣化的態(tài)勢,一個顯著的特點就是OPAC的應用與興起。OPAC全稱Online Public Access Catalogue,在圖書館學上被稱作“聯(lián)機公共目錄查詢”,是圖書館用戶查詢與瀏覽館藏資源最重要的平臺與窗口[1]。它與圖書館的門戶網站及其他網絡服務平臺一樣,是實體圖書館服務領域在網絡環(huán)境下的拓展和延伸。
當前,經濟和社會事業(yè)蓬勃發(fā)展,在推動圖書館硬件設施不斷升級、館藏資源日益豐富的同時,也對圖書館的服務工作提出了越來越高的要求。作為圖書館自動化集成系統(tǒng)的重要組成部分,OPAC直接體現了圖書館在網絡環(huán)境下對讀者的服務能力,其性能的優(yōu)劣直接影響到讀者獲得館藏信息的使用效果,進而影響到讀者對圖書館資源的利用效果[2]。在讀者輸入檢索關鍵字的時候,怎樣才能準確把握和理解他們的意圖?在浩如煙海的館藏資源中,如何讓讀者能夠快速搜尋到他們想要的信息?這都是圖書館技術人員需要認真思考并加以解決的問題。筆者以鹽城市圖書館為例,詳述了在匯文OPAC二次開發(fā)的過程中,關鍵字檢索功能的設計原則、思路和實現流程。
目前,鹽城市圖書館使用的圖書管理軟件是江蘇匯文軟件有限公司的LIBSYS,該軟件自1999年起在全國范圍推廣,到目前為止已被國內近600多家知名高校和公共圖書館所選用,其中包括教育部公布的39所“985”學校中的14所,116所“211”學校中的49所大學[3]。就江蘇省而言,使用LIBSYS管理系統(tǒng)的地級市以上公共圖書館,除鹽城市圖書館之外還有金陵圖書館、無錫市圖書館等其他5家圖書館[4]。筆者通過對上述5家圖書館的訪問,并隨機抽查了南京審計學院、浙江師范大學、北京科技大學[4]等10家匯文高校圖書館用戶,發(fā)現它們均在使用匯文自帶的OPAC子系統(tǒng)。由此可見,匯文OPAC得到了廣泛的運用。然而,就筆者的使用體驗而言,匯文OPAC也存在著一定的局限性。畢竟,匯文軟件的用戶是一個較大的客戶群,既包括大專院校圖書館,也包括公共圖書館,加之每個用戶的館藏結構和規(guī)模各異,因此,匯文OPAC在技術細節(jié)上不可能做到面面俱到,它僅提供一個通用的共性OPAC模板,遵循事先設定的檢索代碼,得到固定樣式的檢索結果。因此,這就需要我們根據本館的館藏特色、結構和規(guī)模,因地制宜,以匯文OPAC v5.0版的現有功能為參考,取長補短,重新開發(fā)本館的OPAC系統(tǒng)。
2.2.1 一般原則
從構建方法以及頁面呈現效果來看,OPAC與普通網站并無二致,它們與用戶的接口都是Web瀏覽器。因此,在開發(fā)OPAC的時候,首先應遵循建設普通網站的基本原則,譬如優(yōu)秀的UI設計、合理的布局導航、人性化的交互體驗等。
2.2.2 特殊原則
從功能上來看,OPAC和普通網站有著顯著的不同。在普通網站面前,用戶是被動者,他們無法控制網站的頁面顯示,只能被動地瀏覽由網站管理人員編輯的文檔內容。而在OPAC面前,用戶是主動者,他們在檢索框中輸入關鍵字,由服務器根據實際情況返回檢索結果頁面。因此,在設計OPAC檢索頁面的時候,我們應該更多地結合本館特色,充分關注技術細節(jié),力求使用戶獲得最好的體驗。
筆者認為,一個優(yōu)秀的檢索頁面,應該做到以下幾點。
2.3.1 易懂的檢索類型
匯文OPAC提供了題名、責任者等11種檢索類型,可謂非常全面。這種設計的初衷應該是為了向讀者提供更多的檢索選擇,但在實際工作中存著一個問題——它們容易令讀者感到困惑。在PL/SQL Developer中輸入以下代碼:
將得到的結果處理后如表1所示。
表1
由表1可以看出,鹽城市圖書館讀者只使用了其中的7種檢索類型。通過對search_content表的分析,我們還可以看出,讀者除了對“題名”和“責任者”這兩種檢索類型的含義比較清晰之外,對其余5種類型可謂不明所以,表中記錄的關鍵字明顯與某一種檢索類型不相對應。而且,所有讀者都忽略了一個重要的檢索類型,即“題名拼音”,它對于那些不擅長中文輸入的讀者,譬如兒童和老人,有著極大的便利。還有一個“主題詞”類型,當用戶并不確定文獻的題名,只是希望查找某一領域文獻的時候,這一檢索類型將變得十分重要,而表1清楚地說明,讀者明顯沒有關注到這種檢索類型。因此,在設計OPAC的時候,添加合適的檢索類型,并在檢索頁上對它們的含義加以說明,尤為重要。
2.3.2 實時的檢索提示
目前,所有搜索引擎,以及各大門戶網站和電商網站,都提供了檢索提示的功能。當我們在檢索框中輸入漢字或字母的時候,就會展開一個下拉列表,上面顯示了以此漢字或字母為開頭的熱門檢索詞,而且隨著輸入詞匯的變化,下拉列表的內容也會相應改變。這種功能可以幫助使用者了解預設檢索詞可能存在的檢索結果,避免用戶輸入錯誤的檢索詞,并將用戶引導到相應的關鍵詞上,從而有效地提升用戶體驗。其原理如下:
①設定檢索框tkey的初值為空,將下拉列表的innerHTML置空并隱藏;
②在tkey的onkeyup事件中,監(jiān)視tkey的現值,即輸入的關鍵字;
③如果現值等于初值則返回;如果現值為空則隱藏下拉列表;如果現值不為空且不等于初值,則通過Ajax將現值以及搜索類型、匹配模式以文獻類型等參數發(fā)送至服務器上的json_search.aspx頁面,然后將現值賦給初值,以便進行再次比較。
④json_search.aspx頁將根據相關參數,輸出一個字符串,該字串由兩部分組成,即匹配結果數目和匹配內容。
⑤前端腳本接收到該字串后,先讀取匹配結果數目,如果為零,則返回。如果不為零,則先將匹配內容中的關鍵字高亮處理后,將其設置為下拉列表的innerHTML,然后予以顯示。
⑥重復上述②至⑤步。
2.3.3 準確的文獻類型
匯文OPAC的檢索頁上,提供了“所有書刊”“中文圖書”“西方圖書”“中文期刊”及“西文期刊”5種文獻類型,這自然存在著一定的局限性。因為不同的圖書館,其館藏結構和文獻類型各不相同。有些圖書館文獻類型眾多,非此5種類型所能涵蓋,有些圖書館文獻類型較少,上述5種文獻類型中的某些類型則又顯得多余。在PL/SQL Developer中輸入以下代碼:
selectdoc_type_code from marc group by doc_type_code
將得到的結果處理后如表2所示。
表2
從表2中可以看出,目前該館只有3種文獻類型,如果讀者試圖搜索西文圖書或西文期刊,結果將為零。因此,在設定檢索文獻類型時,應采取動態(tài)的方法,從數據庫中提取當前的所有文獻類型。這樣既真實地反映了館藏文獻類型,也避免了讀者去做無謂的檢索,從而節(jié)約讀者了時間。
要實現OPAC的檢索功能,一般需要3個頁面,分別為檢索頁、結果頁和詳情頁。在本館OPAC的開發(fā)過程中,前臺腳本使用了Jquery框架,后臺代碼則使用c#實現。
3.1.1 為了使頁面整潔美觀,增強讀者的視覺體驗,筆者使用腳本和css對搜索類型、匹配模式、文獻類型和檢索框進行了整合,如圖1所示。
圖1
3.1.2 根據前文的分析,鹽城市圖書館的OPAC檢索采用了7種搜索類型,即書籍名稱(題名)、題名拼音、主題詞、出版社、作者(責任者)、ISBN和索書號。匹配模式在匯文OPAC的基礎上,增加“完全匹配”。鑒于本館已應用了麥達公司的博云光盤云系統(tǒng),而且OPAC單獨構建了“期刊導航”頁面,故在文獻類型的設置上,從動態(tài)獲取的文獻類型中略去了光盤和期刊兩種類型。
3.1.3 檢索頁的重點就是檢索框的智能提示。目前,鹽城市圖書館OPAC對“題名”“題名拼音”“主題詞”和“出版社”這4種檢索類型提供了檢索提示,并且使用了寬幅下拉列表,以容納更多的提示信息,給讀者更多的選擇。它們的前端代碼完全一致,主要區(qū)別在于在后臺代碼中根據實際情況使用匯文數據庫中不同的數據表。因代碼較長,故筆者略去了部分代碼,以……代替,并對其進行了備注說明。
①前端腳本
②服務器端部分代碼。
在后臺,根據前端傳遞過來的搜索類型、關鍵字等參數,構成sql語句的where子句。對于“題名”和“題名拼音”,是從marc表中獲取數據;對于“主題詞”和“出版社”,一般是從marc_idx表中獲取數據。但對該館來說,通過對marc_idx表中關于出版社信息的分析,發(fā)現其中存在著大量無效信息,因此,筆者改從press表中獲取。
writeRespose(icount.ToString()+"||"+svalue);
點擊檢索按鈕后,向結果頁searchresult.aspx傳遞搜索類型、關鍵字、匹配模式、文獻類型等參數。
結果頁的實現,在技術上沒有什么特別的難點。在本頁面的設計中,筆者借鑒了匯文OPAC結果頁的功能,并對其進行了改進,主要表現在以下三點。
3.2.1 修正了“館藏”列表容易消失的問題。在匯文OPAC v5.0版的檢索結果頁中,當鼠標移動至“館藏”標簽之上時,會出現一個關于該書籍的館藏列表,上面記錄著關于該書的館藏信息,極大地方便了讀者。但問題在于,必須保證鼠標懸念在“館藏”標簽之上,列表才能保持顯示,哪怕用戶無意中移動了鼠標,列表也會立即消失,如果用戶想對列表進行操作,譬如復制列表中的內容,更是不可能實現的事,這在一定程度上給用戶帶來了不便。這是html結構和css沒有處理好引發(fā)的小問題,很容易就能解決。
3.2.2 對搜索結果集進行了優(yōu)化。讀者檢索圖書的目的,是為了尋找可借閱的信息。然而,館藏書刊的狀態(tài)有很多種,比如“可借”“業(yè)務用書”“保留本”等。如果不加選擇地顯示全部信息,顯然不符合讀者檢索的初衷。因此,在檢索結果頁中,筆者對服務器代碼進行了優(yōu)化,使其只顯示允許外借或到館閱覽的圖書,從而更加貼近讀者的需求。
3.2.3 使用了Ajax技術。在我們輸入檢索關鍵字并點擊檢索按鈕后,大多數情況下,會出現很多頁的結果。在未經處理的模式下,點擊頁碼標簽,在新頁面打開的時候會自然地伴隨一個刷新的過程,這也是web應用程序不如桌面應用程序友好之處。然而,如果我們打開網易新聞排行頁面(http://news.163.com/latest/),就會發(fā)現它跟普通頁面有明顯的不同,頁面轉換流暢自然,最主要的原因,就是它使用了Ajax技術。在WEB系統(tǒng)中引入Ajax技術,將傳統(tǒng)的同步通信方式改變?yōu)楫惒酵ㄐ沤换シ绞?,從而豐富客戶端的功能,改善了用戶體驗,縮短了WEB應用程序與桌面應用程序之間的差距[5]。鹽城市圖書館的OPAC,也實現了與網易新聞排行頁面類似的效果。其實現代碼與檢索提示的實現代碼相近,接收的參數字串一致,這就意味著sql代碼的條件語句一致,區(qū)別就在于以下兩個方面。
①后臺sql代碼中select的字段不同,而且均是從marc表中獲取數據。因為頁面需求稍稍復雜,故返回的數據采用了Json格式。
②前端使用Jquery的getJSON()來接收并解析數據。
最終實現效果如圖2。
圖2
匯文公司提供給鹽城市圖書館的OPAC地址為http://opac.yctsg.cn,筆者二次開發(fā)后的檢索地址為http://so.yctsg.cn/。新的檢索功能上線后,得到匯文公司技術人員的肯定,并受到讀者的廣泛好評。
通過本次設計,鹽城市圖書館的OPAC系統(tǒng)基本功能得到了完善,但是隨著檢索技術的不斷更新,程序設計不可能一次性達到完美,還需要持續(xù)的摸索與優(yōu)化,并在通用規(guī)則的范圍內根據大多數讀者的使用習慣進行修改。隨著圖書館事業(yè)的發(fā)展,服務的人性化、個性化拓展,OPAC系統(tǒng)也會逐漸完善與成熟。此次設計成功,不僅提升了讀者的使用體驗,還讓本館技術人員得到了學習和鍛煉,對于今后圖書館的事業(yè)發(fā)展有很大幫助。
[1] 黎邦群.基于數據特征的OPAC簡單檢索及檢索建議[J].圖書館論壇,2012(1):65-68.
[2] 李田章.基于Mashup模式的OPAC資源整合——以整合豆瓣網圖書封面為例[J].圖書館論壇,2011(5):119-121.
[3] 江蘇匯文軟件有限公司官網.關于匯文.[EB/OL].http://www.libsys.com.cn/about.php.
[4] 江蘇匯文軟件有限公司官網.用戶列表.[EB/OL].http://www.libsys.com.cn/userlistmore.php.
[5] 蔣南.基于Ajax技術的搜索建議功能在圖書館OPAC中的應用[J].新世紀圖書館,2009(6):68-71.