朱 白(商洛學(xué)院圖書館)
基于微信公眾平臺(tái)的圖書館通用數(shù)據(jù)庫(kù)查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
朱白(商洛學(xué)院圖書館)
在調(diào)研100所高校圖書館微信查詢系統(tǒng)應(yīng)用情況的基礎(chǔ)上,利用微信公眾平臺(tái)所提供的API接口,編寫程序代碼來詳細(xì)說明圖書館通用數(shù)據(jù)庫(kù)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程;并實(shí)例說明程序的應(yīng)用及測(cè)試效果,對(duì)使用情況也作了相關(guān)分析。
微信公眾平臺(tái);圖書館通用數(shù)據(jù)庫(kù);查詢系統(tǒng);核心代碼
微信(WeChat)是騰訊公司在2011年1月21日免費(fèi)為智能手機(jī)、終端等推出的一個(gè)跨操作系統(tǒng)平臺(tái)的即時(shí)通訊服務(wù)軟件。該軟件可通過移動(dòng)運(yùn)營(yíng)商或Wi-Fi網(wǎng)絡(luò)免費(fèi)快速發(fā)送語(yǔ)音、小視頻、圖片和文字等,也可以使用“掃一掃”、“朋友圈”、“公眾平臺(tái)”等服務(wù)插件進(jìn)行流媒體內(nèi)容分享。[1]目前,移動(dòng)互聯(lián)網(wǎng)正處于快速發(fā)展時(shí)期,智能手機(jī)、平板電腦等智能移動(dòng)終端在高等院校被廣大師生普遍使用,微信也成為幾乎必裝的APP之一。隨著微信的普及應(yīng)用,為了提高圖書館的服務(wù)效能,基于微信公眾平臺(tái)的各種圖書館移動(dòng)應(yīng)用開發(fā),成為各學(xué)者研究的熱門對(duì)象。在利用微信進(jìn)行一般信息查詢方面,如,圖書館的借閱規(guī)則、藏書分布、開閉館時(shí)間、數(shù)據(jù)庫(kù)使用方法與技巧等,當(dāng)微信用戶輸入要查詢的關(guān)鍵詞時(shí),平臺(tái)將自動(dòng)返回對(duì)應(yīng)的信息。[2]對(duì)于復(fù)雜信息的查詢,利用微信公眾平臺(tái)提供的API(Application Programming Interface,應(yīng)用程序編程接口),使之與圖書館集成管理自動(dòng)化系統(tǒng)和各類型數(shù)據(jù)庫(kù)對(duì)接,微信用戶加入圖書館微信平臺(tái),就可以在自己手機(jī)上隨時(shí)隨地查詢圖書館的圖書信息,檢索各類數(shù)據(jù)庫(kù)。此時(shí),微信公眾平臺(tái)就扮演了讀者與圖書館集成管理自動(dòng)化系統(tǒng)和各類型數(shù)據(jù)庫(kù)之間信息交互的一個(gè)媒介角色。[3]隨著微信用戶數(shù)量的迅猛增加,圖書館各類數(shù)據(jù)庫(kù)查詢系統(tǒng)建設(shè)應(yīng)跟上“微”時(shí)代步伐,微信應(yīng)用研究已成為圖書館學(xué)關(guān)注的一個(gè)新的研究領(lǐng)域。
2.1圖書館數(shù)據(jù)庫(kù)微信查詢應(yīng)用現(xiàn)狀
微信誕生于移動(dòng)互聯(lián)網(wǎng)迅速發(fā)展這一背景下,面對(duì)開放的網(wǎng)絡(luò)社區(qū),圖書館應(yīng)更好地借助微信這一社交工具,將圖書館的本地化服務(wù)和資源鏈接到用戶的移動(dòng)終端,實(shí)現(xiàn)個(gè)體服務(wù)與移動(dòng)服務(wù)相輔相成,有機(jī)結(jié)合。[4]為對(duì)當(dāng)前圖書館數(shù)據(jù)庫(kù)微信查詢應(yīng)用現(xiàn)狀作進(jìn)一步了解,筆者進(jìn)行了一番調(diào)研,本次調(diào)研以高校圖書館為主。搜狗搜索是目前唯一一個(gè)騰訊授權(quán)的微信公眾號(hào)搜索引擎,登陸http://weixin.sogou.com,輸入關(guān)鍵字“大學(xué)圖書館”搜索微信公眾號(hào),找到196條數(shù)據(jù),通過對(duì)前100個(gè)公眾號(hào)進(jìn)行逐一手機(jī)掃描添加,并測(cè)試每個(gè)公眾號(hào)所提供的功能,重點(diǎn)對(duì)是否通過微信API進(jìn)行數(shù)據(jù)庫(kù)查詢進(jìn)行了統(tǒng)計(jì)分析。結(jié)果顯示這100個(gè)公眾號(hào)全部通過認(rèn)證,共提供了約140個(gè)應(yīng)用,在功能分類方面,咨訊推送類占比100%,借閱管理類占比70%,館藏查詢類占比86%,云閱讀類占比31%,座位查詢類占比12%,移動(dòng)圖書館類占比7%,智能查詢類占比6%,微網(wǎng)站占比5%,存包查詢類占比2%,其他各查詢類占比約6%。這些應(yīng)用中通過微網(wǎng)站等第三方查詢服務(wù)形式的應(yīng)用123個(gè),占比87.86%,而利用微信API進(jìn)行數(shù)據(jù)庫(kù)查詢的應(yīng)用比較少,只有17個(gè),占比僅為12.14%??梢妼?duì)圖書館數(shù)據(jù)庫(kù)利用微信API進(jìn)行查詢的開發(fā)研究不僅非常有必要,而且有廣闊的應(yīng)用前景。(注:以上數(shù)據(jù)統(tǒng)計(jì)截止于2015年11月27日)
2.2圖書館微信查詢系統(tǒng)實(shí)現(xiàn)思路
微信公眾平臺(tái)為開發(fā)者提供了編輯模式和開發(fā)模式兩種使用方式。在編輯模式下,開發(fā)者可以通過回復(fù)關(guān)鍵詞實(shí)現(xiàn)簡(jiǎn)單的固定查詢功能,當(dāng)用戶回復(fù)特定關(guān)鍵詞會(huì)自動(dòng)回復(fù)一條設(shè)定的信息。但是這種模式只適合一些數(shù)據(jù)量較小的環(huán)境,當(dāng)面對(duì)大量數(shù)據(jù)查詢的時(shí)候需要利用開發(fā)模式的API接口,用戶關(guān)注衛(wèi)星公眾賬號(hào),回復(fù)關(guān)鍵字后,移動(dòng)終端發(fā)起查詢請(qǐng)求至微信公眾平臺(tái)API接口,接口轉(zhuǎn)發(fā)請(qǐng)求值web應(yīng)用接口,通過web應(yīng)用接口連接至數(shù)據(jù)庫(kù)獲得查詢結(jié)果,然后將查詢結(jié)果信息通過微信公眾平臺(tái)API接口反饋給用戶,從而實(shí)現(xiàn)智能查詢,實(shí)現(xiàn)思路見圖。
圖圖書館微信查詢系統(tǒng)實(shí)現(xiàn)思路
2.3圖書館數(shù)據(jù)庫(kù)微信查詢系統(tǒng)架構(gòu)設(shè)計(jì)
查詢系統(tǒng)設(shè)計(jì)了四層架構(gòu),分別是表示層、應(yīng)用層、業(yè)務(wù)層和數(shù)據(jù)層,[5]①表示層指的是微信客戶端,讀者可以通過智能移動(dòng)終端進(jìn)行登錄并獲取信息。②應(yīng)用層主要由微信服務(wù)器及微信公眾平臺(tái)的各種API接口構(gòu)成,負(fù)責(zé)將讀者的消息、HTTP請(qǐng)求通過公眾平臺(tái)的消息接口發(fā)送到業(yè)務(wù)層。③業(yè)務(wù)層通過接口對(duì)消息進(jìn)行業(yè)務(wù)邏輯處理,對(duì)應(yīng)用層的請(qǐng)求進(jìn)一步作出響應(yīng),并通過消息解釋器對(duì)應(yīng)用層的請(qǐng)求進(jìn)行分析,根據(jù)請(qǐng)求的類型分發(fā)到相應(yīng)的處理器,再由處理器調(diào)用數(shù)據(jù)訪問接口對(duì)數(shù)據(jù)層中的數(shù)據(jù)進(jìn)行相應(yīng)操作。④數(shù)據(jù)層由圖書館本地?cái)?shù)據(jù)庫(kù)和業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)組成,負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、組織和管理。
3.1注冊(cè)微信公眾平臺(tái)賬號(hào)和搭建相應(yīng)開發(fā)環(huán)境
(1)在微信公眾平臺(tái)官網(wǎng)注冊(cè)微信公眾賬號(hào),登錄進(jìn)去設(shè)置公眾號(hào)的一些基本信息,如,公眾號(hào)名稱、圖像、介紹等,同時(shí)開啟公眾號(hào)的開發(fā)模式。
(2)準(zhǔn)備服務(wù)器資源,以便在開發(fā)模式下存放應(yīng)用程序文件和數(shù)據(jù)。本文主要介紹基于PHP語(yǔ)言和MySQL數(shù)據(jù)庫(kù)環(huán)境下系統(tǒng)的實(shí)現(xiàn)??梢酝ㄟ^自己購(gòu)買服務(wù)器和域名等資源,或者利用互聯(lián)網(wǎng)云計(jì)算業(yè)務(wù)平臺(tái),如,新浪的SAE(Sina App Engine)、百度的BAE(Baidu App Engine),環(huán)境的搭建和具體的詳細(xì)設(shè)置不再一一贅述。
3.2編寫微信API連接圖書館數(shù)據(jù)庫(kù)進(jìn)行查詢的核心代碼:
(1)定義TOKEN,便于調(diào)用微信API進(jìn)行通信。
define("TOKEN","weixin");
$weixinObj=new weixinapiTest();
if(!isset($_GET['echostr'])){
$weixinObj->weixinMsg();
}else{
$weixinObj->wxvalid();
}
(2)進(jìn)行消息驗(yàn)證。
class weixinapiTest
{
public function wxvalid()
{
$wxechoStr=$_GET["echostr"]; if($this->wechatSignature()){
echo$wxechoStr; exit;
}
}
}
(3)檢查簽名。
private function wechatSignature()
{
$wxsign=$_GET["signature"];
$wxtimes=$_GET["timestamp"];
$wxnonce=$_GET["nonce"];
$wxtoken=TOKEN;
$wxtmpArr=array($wxtoken,$wxtimes, $wxnonce);
sort($wxtmpArr,SORT_STRING);
$wxtmpStr=implode($wxtmpArr);
$wxtmpStr=sha1($wxtmpStr);
if($wxtmpStr==$wxsign){
return true;
}else{
return false;
}
}
(4)消息發(fā)送。
public function weixinMsg()
{
$wechatpostStr=$GLOBALS["HTTP_RAW_PO ST_DATA"];
if(!empty($wechatpostStr)){
$wechatpostObj=simplexml_load_string($wech atpostStr,'SimpleXMLElement',LIBXML_NOCDATA);
$wechatfromUser=$wechatpostObj->FromUser Name;
$wecahttoUser=$wechatpostObj->ToUserName;
$WechatMsgType=$wechatpostObj->MsgType;
$customrevent=$wechatpostObj->Event;
$latitude=$wechatpostObj->Location_X;
$longitude=$wechatpostObj->Location_Y;
$keyword=trim($wechatpostObj->Content); $time=time();
$WechatTextTpl="
";
switch($WechatMsgType)
{
case"event";
if($customrevent=="subscribe")
{$contentStr="感謝關(guān)注商洛學(xué)院圖書館";}//關(guān)注回復(fù)內(nèi)容
break;
case"text";
switch($keyword)
{
case"幫助";
$contentStr="感謝關(guān)注商洛學(xué)院圖書館,回復(fù)書名可查詢圖書信息。";
break;
default;
//連接數(shù)據(jù)庫(kù),以MYSQL為例
$MysqlHost='MySQL服務(wù)器地址';
$MysqlPort='MySQL服務(wù)器端口';
$MysqlUser='MySQL服務(wù)器用戶名';
$MysqlPwd='MySQL服務(wù)器密碼';
$MysqlDBName='MySQL數(shù)據(jù)庫(kù)名';
$MysqlLink=mysql_connect("{$Mysql Host}:{$MysqlPort}",$MysqlUser,$MysqlPwd);
mysql_query("set names'utf8'");
/
/編碼轉(zhuǎn)化
if(!$MysqlLink){
die("Connect Server Failed:" .mysql_error());
}
if(!mysql_select_db($MysqlDBName, $MysqlLink)){
die("elect Database Failed:". mysql_error($MysqlLink));
}
//完成數(shù)據(jù)庫(kù)連接,進(jìn)行模糊查詢操作
$sql="SELECT*FROM`Table` WHERE`title`like'%{$keyword}%'"; $query=mysql_query($sql,$MysqlLink);
if(!$query)
{
die("不能打開數(shù)據(jù)庫(kù):". mysql_error());
}
if(mysql_num_rows($query)<1){
$contentStr="抱歉!您輸入的“{$keyword}”沒有收錄,嘗試輸入其他關(guān)鍵詞試試!";
}
else
{
$print_content='';
//取出結(jié)果并組織數(shù)據(jù)推送至用戶端
while($query_row=mysql_fetch_array(($query)))
{
$id=$query_row[0];
$title=$query_row[1];
$Content=$query_row[2];
$Content=str_replace(" ","",$Content)." ";
$print_content.="{$title} {$Content}";
}
$contentStr=substr_replace($print_content, "",-4);
}
mysql_close($MysqlLink);//關(guān)閉數(shù)據(jù)庫(kù)
}
break;
default;
$contentStr="此項(xiàng)功能尚未開發(fā)";
}
$wechatResultStr=sprintf($WechatText Tpl,$wechatfromUser,$wecahttoUser,$time,$contentStr);
echo$wechatResultStr;
}
else
{
echo"";
exit;
}
}
}
?>
3.3系統(tǒng)程序應(yīng)用測(cè)試
將代碼文件上傳至服務(wù)器,記錄文件路徑并登陸微信公眾平臺(tái)后臺(tái),在開發(fā)者中心修改服務(wù)器配置中的URL(服務(wù)器地址)、Token(令牌,代碼中定義的Token值),然后關(guān)注公眾號(hào),按照提示回復(fù)書名關(guān)鍵詞,如,用戶輸入關(guān)鍵字:“Java”,系統(tǒng)即可回復(fù)書名含“Java”的圖書信息,選中第一個(gè)《Java算法》,則會(huì)看到責(zé)任者、出版信息、ISBN號(hào)碼、預(yù)約、評(píng)論、書架、館藏等信息。查詢系統(tǒng)程序在測(cè)試期間,能夠根據(jù)關(guān)鍵詞返回單條或者多條滿足模糊查詢條件的數(shù)據(jù),也能對(duì)沒有符合條件的空數(shù)據(jù)記錄進(jìn)行提示。能夠滿足用戶90%以上所需信息查詢需求,解決了圖書館本地化服務(wù)和資源鏈接到用戶的移動(dòng)終端問題。為了讓用戶能夠獲得更好、更精準(zhǔn)的交互體驗(yàn)和查詢效果,還需要對(duì)輸入的中文關(guān)鍵詞或者中文語(yǔ)句進(jìn)行智能分析。由于在使用微信進(jìn)行查詢時(shí),輸入的關(guān)鍵詞往往是自然語(yǔ)言,在中文語(yǔ)句中,詞與詞之間緊密相聯(lián),不同于英文可以用空格進(jìn)行分詞。所以,要讓電腦能夠智能識(shí)別中文就有一定難度。要獲取到更為有用的關(guān)鍵詞來進(jìn)行查詢,需要用中文分詞技術(shù)把一條中文語(yǔ)句通過程序算法智能分割成一個(gè)個(gè)單獨(dú)的詞,通過準(zhǔn)確的中文分詞,達(dá)到電腦能夠自動(dòng)識(shí)別中文語(yǔ)句含義的效果。[6]目前,在PHP環(huán)境中使用的開源中文分詞項(xiàng)目也比較多,如使用最廣的SCWS[7]中文分詞系統(tǒng),有著分詞準(zhǔn)確率高、擴(kuò)展能力強(qiáng)、使用起來簡(jiǎn)單易用等特點(diǎn),為微信圖書館數(shù)據(jù)庫(kù)查詢系統(tǒng)實(shí)現(xiàn)智能查詢功能提供了技術(shù)保障。
[1]微信.百度百科[EB/OL].[2015-07-25].http: //baike.baidu.com/subview/5117297/15145056.htm.
[2]靳秀霞,趙紅.探析高校圖書館微信公眾賬號(hào)的運(yùn)營(yíng)方式[J].科技視界,2013(36):227.
[3]王勇,洪斌.微信及其在圖書館的應(yīng)用[J].新世紀(jì)圖書館,2013(9):45-49.
[4]張駿毅,等.“211工程”高校圖書館微信應(yīng)用現(xiàn)狀分析與對(duì)策研究[J].圖書館學(xué)研究,2014(6):29-34.
[5]羅濤,朱穎.圖書館微信機(jī)器人的研究與應(yīng)用[J].圖書館雜志,2014(11):55-61.
[6]中文分詞.百度百科[EB/OL].[2015-07-29]. http://baike.baidu.com/view/19109.htm.
[7]SCWS中文分詞[EB/OL].[2015-07-29].http: //www.xunsearch.com/scws/index.php.
The Design and Research of The Library General Database Query System Based on WeChat Public Platform
Zhu Bai
One of the library's important works is the information query service.By investigating the application status of WeChat inquiry platform of 100 university libraries,this article describes the system design and the implementation process by writing the core code,and demonstrates the program’s application and test results with an specific example,and then analyzes the program's using situation and future development.
WeChat Public Platform;Library Application Database;Inquiry System;Core Code
G250.74
A
1005-8214(2016)08-0085-04
朱白(1977-),女,商洛學(xué)院圖書館館員,研究方向:信息管理與讀者服務(wù)。
2015-12-01[責(zé)任編輯]菊秋芳
本文系2014年度商洛學(xué)院人文社科研究項(xiàng)目“數(shù)字化時(shí)代高校圖書館網(wǎng)絡(luò)式管理的研究”(項(xiàng)目編號(hào):14SKY022)的研究成果之一。