亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Z39.50的數(shù)字圖書館信息檢索的研究

        2016-05-14 01:37:50齊俊霞
        現(xiàn)代電子技術(shù) 2016年5期
        關鍵詞:服務端數(shù)據(jù)源客戶端

        齊俊霞

        摘 要: 圖書館的信息檢索是面向讀者服務的重要方式,讀者可以方便地檢索到所需要書刊的詳細信息和借閱情況?;赯39.50協(xié)議的圖書館信息系統(tǒng)能夠?qū)崿F(xiàn)多個圖書館之間信息的相互訪問,有利于資源共享。Z39.50協(xié)議在數(shù)字圖書館的應用雖然比較廣泛,但用Java語言實現(xiàn)的卻很少見,而Java語言在網(wǎng)絡中的應用越來越廣泛,且具有優(yōu)良的跨平臺特性,因此用純Java語言實現(xiàn)Z39.50協(xié)議很有必要。在分析Z39.50協(xié)議和JZKit2最新版本軟件的基礎上,對JZKit2提出了改進意見,并應用較先進的技術(shù)和工具加以實現(xiàn)。

        關鍵詞: 信息檢索; Z39.50協(xié)議; Maven2; JZKit2項目; JavaI

        中圖分類號: TN911?34; TM417 文獻標識碼: A 文章編號: 1004?373X(2016)05?0143?04

        基于Z39.50協(xié)議的圖書館自動化系統(tǒng)能夠?qū)崿F(xiàn)多個圖書館之間信息的相互訪問,有利于資源共享[1]。現(xiàn)在絕大多數(shù)的圖書館自動化系統(tǒng)、聯(lián)合目錄系統(tǒng)與數(shù)據(jù)發(fā)布系統(tǒng)均把Z39.50協(xié)議作為主要的檢索協(xié)議來實現(xiàn)[2]。

        Z39.50協(xié)議是分布式虛擬聯(lián)合數(shù)據(jù)庫檢索體系,其目的是實現(xiàn)網(wǎng)上多個數(shù)據(jù)庫檢索、規(guī)范查詢格式、簡化檢索過程、實現(xiàn)異構(gòu)系統(tǒng)和不同圖書館系統(tǒng)之間的通信[3]。

        目前世界上已開發(fā)了不少軟件工具包支持Z39.50協(xié)議[4]。Z39.50本身的特點及應用范圍很適合用Java語言實現(xiàn)[5]。JZKit項目是Knowledge Integration公司維護的、100%開放源碼的純Java工具包,它不依賴任何有知識產(chǎn)權(quán)的工具包(它引入的工具包如a2j,log4j,xalan,xerces等都是開源且免費的)[6]。

        1 Z39.50協(xié)議

        1.1 Z39.50協(xié)議的內(nèi)容

        Z39.50協(xié)議的目的是使客戶端和服務器端的開放互聯(lián)變得便利。由于數(shù)據(jù)庫完成的方法大不相同、不同的系統(tǒng)描述數(shù)據(jù)存儲的格式不同,需要采用一種通用的、抽象的模型來描述數(shù)據(jù)庫,各個系統(tǒng)可以將其具體實現(xiàn)映射到該抽象模型上。這就使得不同的系統(tǒng)在一個標準的、相互理解的基礎上進行通信,使客戶端可以將不同數(shù)據(jù)庫的信息集成在一起。

        Z39.50協(xié)議定義了一組服務器端(Target)與客戶端(Origin)通信的規(guī)范,它是定義在OSI中應用層上的協(xié)議,主要提供查詢與獲取功能。

        完整的Z39.50應用系統(tǒng)由Z39.50服務端(簡稱Z Server)、數(shù)據(jù)資源、Z39.50客戶端(Z Client)組成。Z39.50支持在分布式的、客戶/服務器的環(huán)境中進行信息查詢與提取,給另一個扮演服務器的計算機發(fā)出查詢請求,由服務器軟件對一個或多個數(shù)據(jù)庫進行搜索,創(chuàng)造一個滿足查詢條件的結(jié)果集,并將結(jié)果集中的記錄返回客戶端。客戶端在接收到查詢請求的響應后,針對服務器端所創(chuàng)造的查詢結(jié)果集提取所需記錄的信息或要求服務器端對此查詢結(jié)果集作進一步的操作,如圖1所示。

        圖1 Z39.50系統(tǒng)的操作過程

        1.2 Z39.50協(xié)議的實現(xiàn)和存在問題

        Z39.50協(xié)議實際上就是一個中間協(xié)議層,通過它的轉(zhuǎn)換,可以實現(xiàn)異構(gòu)機型、異種操作平臺之間的交互式通信,實現(xiàn)分布式異構(gòu)數(shù)據(jù)源之間的無縫連接。

        Z39.50協(xié)議是一個較為成熟的網(wǎng)絡檢索標準,但在目前的推廣實踐中也存在一些問題。

        (1) Z39.50是一個過于完美復雜的重量級協(xié)議。其系統(tǒng)配置復雜,不利于非專業(yè)用戶的使用,也不利于其推廣。

        (2) Z39.50協(xié)議和萬維網(wǎng)之間融合的障礙。主要是Z39.50協(xié)議和萬維網(wǎng)所使用的HTTP協(xié)議是兩種不同機制的協(xié)議。

        (3) Z39.50缺少良好的發(fā)現(xiàn)機制。Z39.50客戶端軟件一般都必須由人工來收集Z39.50服務器地址(有些軟件預置了一些地址),無規(guī)律可循。

        Z39.50協(xié)議的下一代版本(ZING)將定義一個結(jié)合Z39.50的Web服務,開發(fā)人員可以在一個已經(jīng)存在的Z39.50系統(tǒng)上很容易地構(gòu)建自己的網(wǎng)關系統(tǒng)。并且ZING應用SOAP和URL為基礎的信息獲取機制,減少了網(wǎng)關中Z協(xié)議方面的網(wǎng)絡通信瓶頸,并且信息能夠輕易地通過互聯(lián)網(wǎng)進行通信,而無需擔心遭到防火墻等網(wǎng)絡安全技術(shù)的攔截。

        2 項目管理工具Maven

        JZKit2項目工程是用Maven管理的,Maven現(xiàn)在的版本是Maven2。Maven是構(gòu)建、管理任何基于Java的項目,最早始于JarkartaTurbine項目。Maven的目標是讓Java開發(fā)者的日常工作更加輕松,并有助于理解基于Java的項目。Maven一個重要特性是定義了項目的標準模板??梢酝ㄟ^命令: mvn archetype:create?DgroupId=com. My company.app?DartifactId=my?app創(chuàng)建一個單一的Maven項目。創(chuàng)建好的項目,具有了特定的項目結(jié)構(gòu)。在項目進程中,cmd使用簡單的Maven命令,就可以完成初始化→開發(fā)→測試→發(fā)布的全過程。

        在校園內(nèi),很多情況上國外網(wǎng)站不方便,而Maven的自動下載一般都是訪問國外網(wǎng)站的,這可以通過設置代理來解決。在配置文件settings.xml中,將下面一段去掉注釋,并填入實際代理服務器的信息即可:

        optional

        truehttp

        proxyuserproxypass

        proxy.host.net80local.net,some.host.com

        在處理客戶請求的程序中,轉(zhuǎn)發(fā)之前先判斷是否請求本地數(shù)據(jù)源,若是直接處理,不要再轉(zhuǎn)發(fā),如下(在jzkit2_z3950_plugin子模塊的Z3950Origin.java文件中):

        ArrayList v = new ArrayList(q.collections);

        LocalResourceDBO r = (LocalResourceDBO) user_info;

        if (r != null)

        { log.info("LocalResourceDBO: " + r.getName());

        if (v.contains(r.getName()))

        { st.setStatus(IRResultSetStatus.COMPLETE);

        st.setFragmentCount(10); return st; } }

        4.4 測試方法

        分別先后啟動服務端和客戶端。在客戶端輸入任意字符(不合法的命令)就會提示正確的請求格式,按照提示輸入要查詢的數(shù)據(jù)庫和查詢請求,觀察服務端輸出。為測試需要,目前采用MySQL數(shù)據(jù)庫,在其中的各個表格中暫時插入以下數(shù)據(jù):

        LOCK TABLES;

        jz_search_service_props;

        WRITE; INSERT INTO;

        jz_search_service_props;

        (search_service_id, prop_value, prop_name)

        VALUES (1, ′usmarc′, ′defaultRecordSyntax′),

        (1, ′f′, ′defaultElementSetName′),

        (1, ′10.1.0.203′, ′host′), (1, ′9999′, ′port′), (1, ′F′, ′smallSetElementSetName′),

        (1, ′UTF?8′, ′charsetEncoding′),

        (2, ′usmarc′, ′defaultRecordSyntax′),

        (2, ′f′, ′defaultElementSetName′),

        (2, ′10.1.0.236′, ′host′),

        (2, ′9999′, ′port′),

        (2, ′F′, ′smallSetElementSetName′),

        (2, ′UTF?8′, ′charsetEncoding′);

        UNLOCK TABLES;

        設置了兩個數(shù)據(jù)源:Default和gqj,這也是客戶端可以指定的數(shù)據(jù)庫名。在表格jz_search_service_props中存放了兩個數(shù)據(jù)源的信息,這里重點關注它們的主機IP信息(即列Host)。其中Default對應的數(shù)據(jù)源在本機(腳本中把主機信息設為了實際IP:10.1.0.203,沒有用回送地址127.0.0.1,這樣用該腳本可以無需修改地插入到其他機器的數(shù)據(jù)庫),gqj對應另一臺機器的數(shù)據(jù)源(這臺機器也要啟動JZKit2的服務端)。在表jz_collection_instance中每一個可以查詢的數(shù)據(jù)庫名都有一個局部名稱local_id與之對應。

        在客戶端指定要查詢的數(shù)據(jù)庫是Default(即本機),服務端處理該請求,按照前面修改的方案,要先檢查請求的數(shù)據(jù)庫是否在本地,這就要求服務端“知道”本地數(shù)據(jù)庫的局部名稱,這一點是通過在前面增加的表格local_resource來實現(xiàn)的。在本地數(shù)據(jù)庫中插入以下數(shù)據(jù):

        LOCK TABLES ′local_resource′ WRITE;

        INSERT INTO ′local_resource′ (id, name) VALUES(1, ′lmx′); UNLOCK TABLES;

        這樣服務端查詢表就知道,請求的數(shù)據(jù)庫Default就是本地的lmx,于是就直接查詢本地數(shù)據(jù),并返回結(jié)果給客戶端。如果在客戶端指定要查詢的數(shù)據(jù)庫是gqj,服務端也要進行上面查詢local_resource的過程,通過比較知道這不是本地數(shù)據(jù)庫,就把請求轉(zhuǎn)發(fā)到表jz_collection_instance中描述的該數(shù)據(jù)庫所對應的主機10.1.0.236。在此主機的數(shù)據(jù)庫的數(shù)據(jù)也是根據(jù)前面的腳本插入的,因此描述數(shù)據(jù)資源的信息數(shù)據(jù)都相同,惟有表格local_resource的內(nèi)容不同,它的數(shù)據(jù)庫有不同的本地名稱qgj,如下:

        LOCK TABLES ′local_resource′;

        WRITE; INSERT INTO ′local_resource′ (id, name) VALUES (1, ′gqj′);

        UNLOCK TABLES;

        該主機啟動的JZKit2服務端收到請求后進行同樣的步驟,發(fā)現(xiàn)請求的是本地數(shù)據(jù)庫,于是根據(jù)請求查詢數(shù)據(jù),并將數(shù)據(jù)結(jié)果返回給10.1.0.203的服務端,服務端再返回給客戶端。

        5 結(jié) 論

        本文在分析、研究Z39.50協(xié)議和JZKit2程序包的基礎上,對JZKit2的服務端還沒有實現(xiàn)的功能提出了一種實現(xiàn)思路,并用該包所涉及的工具和技術(shù)加以實現(xiàn)。 現(xiàn)在JZKit2客戶端的功能比較完善,可以用來測試其他Z39.50產(chǎn)品服務端的功能。由于JZKit2的開源特性及支持多平臺,相信它的實現(xiàn)不僅能吸引大量客戶廣泛采用,對Z39.50協(xié)議的推廣和普及也會做出不小的貢獻。

        參考文獻

        [1] 牛振東,師雪霖,葉成林.數(shù)字圖書館支撐技術(shù)領域標準規(guī)范的現(xiàn)狀和發(fā)展[J].我國數(shù)字圖書館標準規(guī)范建設,2003(7):11?12.

        [2] 牟有靜,候麗梅.淺談數(shù)字圖書館與全文檢索技術(shù)[J].情報科學,2012(5):535?537.

        [3] 閔峰,張福炎,黃偉紅,等.基于Z39.50的分布式聯(lián)機書目檢索[J].情報學報,2012(5):538?543.

        [4] 黃如花.數(shù)字圖書館原理與技術(shù)[M].武漢:武漢大學出版社,2011:123?124.

        [5] 師雪霖.Web集成信息檢索及其在數(shù)字圖書館中的應用研究[D].北京:北京理工大學,2012:21?22.

        [6] 楊萌.圖書館防盜系統(tǒng)漏洞的研究[J].現(xiàn)代電子技術(shù),2014,37(5):94?96.

        猜你喜歡
        服務端數(shù)據(jù)源客戶端
        云存儲中基于相似性的客戶-服務端雙端數(shù)據(jù)去重方法
        縣級臺在突發(fā)事件報道中如何應用手機客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        新時期《移動Web服務端開發(fā)》課程教學改革的研究
        消費導刊(2018年8期)2018-05-25 13:19:48
        Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
        在Windows Server 2008上創(chuàng)建應用
        基于不同網(wǎng)絡數(shù)據(jù)源的期刊評價研究
        基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
        分布式異構(gòu)數(shù)據(jù)源標準化查詢設計與實現(xiàn)
        日韩精品免费在线视频| 久久九九久精品国产| 最近日韩激情中文字幕| 99精品国产自产在线观看| 蜜桃在线高清视频免费观看网址| av无码小缝喷白浆在线观看| 激情内射亚州一区二区三区爱妻| 性一交一乱一伦一视频一二三区| 麻豆av毛片在线观看| 性高朝久久久久久久3小时| 久久久精品人妻一区二区三区蜜桃| 亚洲色AV性色在线观看| 蜜桃一区二区三区在线视频| 国产小视频在线看不卡| 男人添女人下部高潮全视频| 91亚洲国产三上悠亚在线播放| 久久久亚洲一区二区三区| 国产精品亚洲精品日韩已方| 中国丰满熟妇xxxx| 欧美黑人xxxx性高清版| 人妻蜜桃日产一本久道综合在线| 欧美丰满熟妇bbb久久久| 色av综合av综合无码网站| 国产人成在线成免费视频| 加勒比精品视频在线播放| 老少配老妇老熟女中文普通话| 亚洲国产麻豆综合一区| 久久精品国产亚洲av沈先生| 久久精品人人做人人爱爱| 亚洲 高清 成人 动漫| 亚洲国产一区二区三区,| 男女啪啪视频高清视频| 精品9e精品视频在线观看| 中文字幕大屁股熟女乱| 亚洲免费精品一区二区| 婷婷丁香五月激情综合| 91尤物视频在线观看| 人妻中出中文字幕在线| 亚洲av日韩精品久久久久久a| 国产白嫩美女在线观看| 亚洲av成人一区二区三区色|