朱 白(商洛學院圖書館)
基于微信公眾平臺的圖書館通用數(shù)據(jù)庫查詢系統(tǒng)設計與實現(xiàn)
朱白(商洛學院圖書館)
在調研100所高校圖書館微信查詢系統(tǒng)應用情況的基礎上,利用微信公眾平臺所提供的API接口,編寫程序代碼來詳細說明圖書館通用數(shù)據(jù)庫查詢系統(tǒng)的設計與實現(xiàn)過程;并實例說明程序的應用及測試效果,對使用情況也作了相關分析。
微信公眾平臺;圖書館通用數(shù)據(jù)庫;查詢系統(tǒng);核心代碼
微信(WeChat)是騰訊公司在2011年1月21日免費為智能手機、終端等推出的一個跨操作系統(tǒng)平臺的即時通訊服務軟件。該軟件可通過移動運營商或Wi-Fi網(wǎng)絡免費快速發(fā)送語音、小視頻、圖片和文字等,也可以使用“掃一掃”、“朋友圈”、“公眾平臺”等服務插件進行流媒體內容分享。[1]目前,移動互聯(lián)網(wǎng)正處于快速發(fā)展時期,智能手機、平板電腦等智能移動終端在高等院校被廣大師生普遍使用,微信也成為幾乎必裝的APP之一。隨著微信的普及應用,為了提高圖書館的服務效能,基于微信公眾平臺的各種圖書館移動應用開發(fā),成為各學者研究的熱門對象。在利用微信進行一般信息查詢方面,如,圖書館的借閱規(guī)則、藏書分布、開閉館時間、數(shù)據(jù)庫使用方法與技巧等,當微信用戶輸入要查詢的關鍵詞時,平臺將自動返回對應的信息。[2]對于復雜信息的查詢,利用微信公眾平臺提供的API(Application Programming Interface,應用程序編程接口),使之與圖書館集成管理自動化系統(tǒng)和各類型數(shù)據(jù)庫對接,微信用戶加入圖書館微信平臺,就可以在自己手機上隨時隨地查詢圖書館的圖書信息,檢索各類數(shù)據(jù)庫。此時,微信公眾平臺就扮演了讀者與圖書館集成管理自動化系統(tǒng)和各類型數(shù)據(jù)庫之間信息交互的一個媒介角色。[3]隨著微信用戶數(shù)量的迅猛增加,圖書館各類數(shù)據(jù)庫查詢系統(tǒng)建設應跟上“微”時代步伐,微信應用研究已成為圖書館學關注的一個新的研究領域。
2.1圖書館數(shù)據(jù)庫微信查詢應用現(xiàn)狀
微信誕生于移動互聯(lián)網(wǎng)迅速發(fā)展這一背景下,面對開放的網(wǎng)絡社區(qū),圖書館應更好地借助微信這一社交工具,將圖書館的本地化服務和資源鏈接到用戶的移動終端,實現(xiàn)個體服務與移動服務相輔相成,有機結合。[4]為對當前圖書館數(shù)據(jù)庫微信查詢應用現(xiàn)狀作進一步了解,筆者進行了一番調研,本次調研以高校圖書館為主。搜狗搜索是目前唯一一個騰訊授權的微信公眾號搜索引擎,登陸http://weixin.sogou.com,輸入關鍵字“大學圖書館”搜索微信公眾號,找到196條數(shù)據(jù),通過對前100個公眾號進行逐一手機掃描添加,并測試每個公眾號所提供的功能,重點對是否通過微信API進行數(shù)據(jù)庫查詢進行了統(tǒng)計分析。結果顯示這100個公眾號全部通過認證,共提供了約140個應用,在功能分類方面,咨訊推送類占比100%,借閱管理類占比70%,館藏查詢類占比86%,云閱讀類占比31%,座位查詢類占比12%,移動圖書館類占比7%,智能查詢類占比6%,微網(wǎng)站占比5%,存包查詢類占比2%,其他各查詢類占比約6%。這些應用中通過微網(wǎng)站等第三方查詢服務形式的應用123個,占比87.86%,而利用微信API進行數(shù)據(jù)庫查詢的應用比較少,只有17個,占比僅為12.14%??梢妼D書館數(shù)據(jù)庫利用微信API進行查詢的開發(fā)研究不僅非常有必要,而且有廣闊的應用前景。(注:以上數(shù)據(jù)統(tǒng)計截止于2015年11月27日)
2.2圖書館微信查詢系統(tǒng)實現(xiàn)思路
微信公眾平臺為開發(fā)者提供了編輯模式和開發(fā)模式兩種使用方式。在編輯模式下,開發(fā)者可以通過回復關鍵詞實現(xiàn)簡單的固定查詢功能,當用戶回復特定關鍵詞會自動回復一條設定的信息。但是這種模式只適合一些數(shù)據(jù)量較小的環(huán)境,當面對大量數(shù)據(jù)查詢的時候需要利用開發(fā)模式的API接口,用戶關注衛(wèi)星公眾賬號,回復關鍵字后,移動終端發(fā)起查詢請求至微信公眾平臺API接口,接口轉發(fā)請求值web應用接口,通過web應用接口連接至數(shù)據(jù)庫獲得查詢結果,然后將查詢結果信息通過微信公眾平臺API接口反饋給用戶,從而實現(xiàn)智能查詢,實現(xiàn)思路見圖。
圖圖書館微信查詢系統(tǒng)實現(xiàn)思路
2.3圖書館數(shù)據(jù)庫微信查詢系統(tǒng)架構設計
查詢系統(tǒng)設計了四層架構,分別是表示層、應用層、業(yè)務層和數(shù)據(jù)層,[5]①表示層指的是微信客戶端,讀者可以通過智能移動終端進行登錄并獲取信息。②應用層主要由微信服務器及微信公眾平臺的各種API接口構成,負責將讀者的消息、HTTP請求通過公眾平臺的消息接口發(fā)送到業(yè)務層。③業(yè)務層通過接口對消息進行業(yè)務邏輯處理,對應用層的請求進一步作出響應,并通過消息解釋器對應用層的請求進行分析,根據(jù)請求的類型分發(fā)到相應的處理器,再由處理器調用數(shù)據(jù)訪問接口對數(shù)據(jù)層中的數(shù)據(jù)進行相應操作。④數(shù)據(jù)層由圖書館本地數(shù)據(jù)庫和業(yè)務系統(tǒng)數(shù)據(jù)庫組成,負責數(shù)據(jù)的存儲、組織和管理。
3.1注冊微信公眾平臺賬號和搭建相應開發(fā)環(huán)境
(1)在微信公眾平臺官網(wǎng)注冊微信公眾賬號,登錄進去設置公眾號的一些基本信息,如,公眾號名稱、圖像、介紹等,同時開啟公眾號的開發(fā)模式。
(2)準備服務器資源,以便在開發(fā)模式下存放應用程序文件和數(shù)據(jù)。本文主要介紹基于PHP語言和MySQL數(shù)據(jù)庫環(huán)境下系統(tǒng)的實現(xiàn)。可以通過自己購買服務器和域名等資源,或者利用互聯(lián)網(wǎng)云計算業(yè)務平臺,如,新浪的SAE(Sina App Engine)、百度的BAE(Baidu App Engine),環(huán)境的搭建和具體的詳細設置不再一一贅述。
3.2編寫微信API連接圖書館數(shù)據(jù)庫進行查詢的核心代碼:
(1)定義TOKEN,便于調用微信API進行通信。
define("TOKEN","weixin");
$weixinObj=new weixinapiTest();
if(!isset($_GET['echostr'])){
$weixinObj->weixinMsg();
}else{
$weixinObj->wxvalid();
}
(2)進行消息驗證。
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="感謝關注商洛學院圖書館";}//關注回復內容
break;
case"text";
switch($keyword)
{
case"幫助";
$contentStr="感謝關注商洛學院圖書館,回復書名可查詢圖書信息。";
break;
default;
//連接數(shù)據(jù)庫,以MYSQL為例
$MysqlHost='MySQL服務器地址';
$MysqlPort='MySQL服務器端口';
$MysqlUser='MySQL服務器用戶名';
$MysqlPwd='MySQL服務器密碼';
$MysqlDBName='MySQL數(shù)據(jù)庫名';
$MysqlLink=mysql_connect("{$Mysql Host}:{$MysqlPort}",$MysqlUser,$MysqlPwd);
mysql_query("set names'utf8'");
/
/編碼轉化
if(!$MysqlLink){
die("Connect Server Failed:" .mysql_error());
}
if(!mysql_select_db($MysqlDBName, $MysqlLink)){
die("elect Database Failed:". mysql_error($MysqlLink));
}
//完成數(shù)據(jù)庫連接,進行模糊查詢操作
$sql="SELECT*FROM`Table` WHERE`title`like'%{$keyword}%'"; $query=mysql_query($sql,$MysqlLink);
if(!$query)
{
die("不能打開數(shù)據(jù)庫:". mysql_error());
}
if(mysql_num_rows($query)<1){
$contentStr="抱歉!您輸入的“{$keyword}”沒有收錄,嘗試輸入其他關鍵詞試試!";
}
else
{
$print_content='';
//取出結果并組織數(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);//關閉數(shù)據(jù)庫
}
break;
default;
$contentStr="此項功能尚未開發(fā)";
}
$wechatResultStr=sprintf($WechatText Tpl,$wechatfromUser,$wecahttoUser,$time,$contentStr);
echo$wechatResultStr;
}
else
{
echo"";
exit;
}
}
}
?>
3.3系統(tǒng)程序應用測試
將代碼文件上傳至服務器,記錄文件路徑并登陸微信公眾平臺后臺,在開發(fā)者中心修改服務器配置中的URL(服務器地址)、Token(令牌,代碼中定義的Token值),然后關注公眾號,按照提示回復書名關鍵詞,如,用戶輸入關鍵字:“Java”,系統(tǒng)即可回復書名含“Java”的圖書信息,選中第一個《Java算法》,則會看到責任者、出版信息、ISBN號碼、預約、評論、書架、館藏等信息。查詢系統(tǒng)程序在測試期間,能夠根據(jù)關鍵詞返回單條或者多條滿足模糊查詢條件的數(shù)據(jù),也能對沒有符合條件的空數(shù)據(jù)記錄進行提示。能夠滿足用戶90%以上所需信息查詢需求,解決了圖書館本地化服務和資源鏈接到用戶的移動終端問題。為了讓用戶能夠獲得更好、更精準的交互體驗和查詢效果,還需要對輸入的中文關鍵詞或者中文語句進行智能分析。由于在使用微信進行查詢時,輸入的關鍵詞往往是自然語言,在中文語句中,詞與詞之間緊密相聯(lián),不同于英文可以用空格進行分詞。所以,要讓電腦能夠智能識別中文就有一定難度。要獲取到更為有用的關鍵詞來進行查詢,需要用中文分詞技術把一條中文語句通過程序算法智能分割成一個個單獨的詞,通過準確的中文分詞,達到電腦能夠自動識別中文語句含義的效果。[6]目前,在PHP環(huán)境中使用的開源中文分詞項目也比較多,如使用最廣的SCWS[7]中文分詞系統(tǒng),有著分詞準確率高、擴展能力強、使用起來簡單易用等特點,為微信圖書館數(shù)據(jù)庫查詢系統(tǒng)實現(xiàn)智能查詢功能提供了技術保障。
[1]微信.百度百科[EB/OL].[2015-07-25].http: //baike.baidu.com/subview/5117297/15145056.htm.
[2]靳秀霞,趙紅.探析高校圖書館微信公眾賬號的運營方式[J].科技視界,2013(36):227.
[3]王勇,洪斌.微信及其在圖書館的應用[J].新世紀圖書館,2013(9):45-49.
[4]張駿毅,等.“211工程”高校圖書館微信應用現(xiàn)狀分析與對策研究[J].圖書館學研究,2014(6):29-34.
[5]羅濤,朱穎.圖書館微信機器人的研究與應用[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-),女,商洛學院圖書館館員,研究方向:信息管理與讀者服務。
2015-12-01[責任編輯]菊秋芳
本文系2014年度商洛學院人文社科研究項目“數(shù)字化時代高校圖書館網(wǎng)絡式管理的研究”(項目編號:14SKY022)的研究成果之一。