基于微信公众平台的图书馆通用数据库查询系统设计与实现

2016-10-13 07:07商洛学院图书馆
图书馆理论与实践 2016年8期
关键词:分词服务器公众

朱 白(商洛学院图书馆)

基于微信公众平台的图书馆通用数据库查询系统设计与实现

朱白(商洛学院图书馆)

在调研100所高校图书馆微信查询系统应用情况的基础上,利用微信公众平台所提供的API接口,编写程序代码来详细说明图书馆通用数据库查询系统的设计与实现过程;并实例说明程序的应用及测试效果,对使用情况也作了相关分析。

微信公众平台;图书馆通用数据库;查询系统;核心代码

1 前言

微信(WeChat)是腾讯公司在2011年1月21日免费为智能手机、终端等推出的一个跨操作系统平台的即时通讯服务软件。该软件可通过移动运营商或Wi-Fi网络免费快速发送语音、小视频、图片和文字等,也可以使用“扫一扫”、“朋友圈”、“公众平台”等服务插件进行流媒体内容分享。[1]目前,移动互联网正处于快速发展时期,智能手机、平板电脑等智能移动终端在高等院校被广大师生普遍使用,微信也成为几乎必装的APP之一。随着微信的普及应用,为了提高图书馆的服务效能,基于微信公众平台的各种图书馆移动应用开发,成为各学者研究的热门对象。在利用微信进行一般信息查询方面,如,图书馆的借阅规则、藏书分布、开闭馆时间、数据库使用方法与技巧等,当微信用户输入要查询的关键词时,平台将自动返回对应的信息。[2]对于复杂信息的查询,利用微信公众平台提供的API(Application Programming Interface,应用程序编程接口),使之与图书馆集成管理自动化系统和各类型数据库对接,微信用户加入图书馆微信平台,就可以在自己手机上随时随地查询图书馆的图书信息,检索各类数据库。此时,微信公众平台就扮演了读者与图书馆集成管理自动化系统和各类型数据库之间信息交互的一个媒介角色。[3]随着微信用户数量的迅猛增加,图书馆各类数据库查询系统建设应跟上“微”时代步伐,微信应用研究已成为图书馆学关注的一个新的研究领域。

2 基于微信的图书馆数据库查询系统需求分析及设计思路

2.1图书馆数据库微信查询应用现状

微信诞生于移动互联网迅速发展这一背景下,面对开放的网络社区,图书馆应更好地借助微信这一社交工具,将图书馆的本地化服务和资源链接到用户的移动终端,实现个体服务与移动服务相辅相成,有机结合。[4]为对当前图书馆数据库微信查询应用现状作进一步了解,笔者进行了一番调研,本次调研以高校图书馆为主。搜狗搜索是目前唯一一个腾讯授权的微信公众号搜索引擎,登陆http://weixin.sogou.com,输入关键字“大学图书馆”搜索微信公众号,找到196条数据,通过对前100个公众号进行逐一手机扫描添加,并测试每个公众号所提供的功能,重点对是否通过微信API进行数据库查询进行了统计分析。结果显示这100个公众号全部通过认证,共提供了约140个应用,在功能分类方面,咨讯推送类占比100%,借阅管理类占比70%,馆藏查询类占比86%,云阅读类占比31%,座位查询类占比12%,移动图书馆类占比7%,智能查询类占比6%,微网站占比5%,存包查询类占比2%,其他各查询类占比约6%。这些应用中通过微网站等第三方查询服务形式的应用123个,占比87.86%,而利用微信API进行数据库查询的应用比较少,只有17个,占比仅为12.14%。可见对图书馆数据库利用微信API进行查询的开发研究不仅非常有必要,而且有广阔的应用前景。(注:以上数据统计截止于2015年11月27日)

2.2图书馆微信查询系统实现思路

微信公众平台为开发者提供了编辑模式和开发模式两种使用方式。在编辑模式下,开发者可以通过回复关键词实现简单的固定查询功能,当用户回复特定关键词会自动回复一条设定的信息。但是这种模式只适合一些数据量较小的环境,当面对大量数据查询的时候需要利用开发模式的API接口,用户关注卫星公众账号,回复关键字后,移动终端发起查询请求至微信公众平台API接口,接口转发请求值web应用接口,通过web应用接口连接至数据库获得查询结果,然后将查询结果信息通过微信公众平台API接口反馈给用户,从而实现智能查询,实现思路见图。

图图书馆微信查询系统实现思路

2.3图书馆数据库微信查询系统架构设计

查询系统设计了四层架构,分别是表示层、应用层、业务层和数据层,[5]①表示层指的是微信客户端,读者可以通过智能移动终端进行登录并获取信息。②应用层主要由微信服务器及微信公众平台的各种API接口构成,负责将读者的消息、HTTP请求通过公众平台的消息接口发送到业务层。③业务层通过接口对消息进行业务逻辑处理,对应用层的请求进一步作出响应,并通过消息解释器对应用层的请求进行分析,根据请求的类型分发到相应的处理器,再由处理器调用数据访问接口对数据层中的数据进行相应操作。④数据层由图书馆本地数据库和业务系统数据库组成,负责数据的存储、组织和管理。

3 图书馆数据库微信通用查询系统实现过程

3.1注册微信公众平台账号和搭建相应开发环境

(1)在微信公众平台官网注册微信公众账号,登录进去设置公众号的一些基本信息,如,公众号名称、图像、介绍等,同时开启公众号的开发模式。

(2)准备服务器资源,以便在开发模式下存放应用程序文件和数据。本文主要介绍基于PHP语言和MySQL数据库环境下系统的实现。可以通过自己购买服务器和域名等资源,或者利用互联网云计算业务平台,如,新浪的SAE(Sina App Engine)、百度的BAE(Baidu App Engine),环境的搭建和具体的详细设置不再一一赘述。

3.2编写微信API连接图书馆数据库进行查询的核心代码:

(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)消息发送。

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;

//连接数据库,以MYSQL为例

$MysqlHost='MySQL服务器地址';

$MysqlPort='MySQL服务器端口';

$MysqlUser='MySQL服务器用户名';

$MysqlPwd='MySQL服务器密码';

$MysqlDBName='MySQL数据库名';

$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));

}

//完成数据库连接,进行模糊查询操作

$sql="SELECT*FROM`Table` WHERE`title`like'%{$keyword}%'"; $query=mysql_query($sql,$MysqlLink);

if(!$query)

{

die("不能打开数据库:
". mysql_error());

}

if(mysql_num_rows($query)<1){

$contentStr="抱歉!您输入的“{$keyword}”没有收录,尝试输入其他关键词试试!";

}

else

{

$print_content='';

//取出结果并组织数据推送至用户端

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);//关闭数据库

}

break;

default;

$contentStr="此项功能尚未开发";

}

$wechatResultStr=sprintf($WechatText Tpl,$wechatfromUser,$wecahttoUser,$time,$contentStr);

echo$wechatResultStr;

}

else

{

echo"";

exit;

}

}

}

?>

3.3系统程序应用测试

将代码文件上传至服务器,记录文件路径并登陆微信公众平台后台,在开发者中心修改服务器配置中的URL(服务器地址)、Token(令牌,代码中定义的Token值),然后关注公众号,按照提示回复书名关键词,如,用户输入关键字:“Java”,系统即可回复书名含“Java”的图书信息,选中第一个《Java算法》,则会看到责任者、出版信息、ISBN号码、预约、评论、书架、馆藏等信息。查询系统程序在测试期间,能够根据关键词返回单条或者多条满足模糊查询条件的数据,也能对没有符合条件的空数据记录进行提示。能够满足用户90%以上所需信息查询需求,解决了图书馆本地化服务和资源链接到用户的移动终端问题。为了让用户能够获得更好、更精准的交互体验和查询效果,还需要对输入的中文关键词或者中文语句进行智能分析。由于在使用微信进行查询时,输入的关键词往往是自然语言,在中文语句中,词与词之间紧密相联,不同于英文可以用空格进行分词。所以,要让电脑能够智能识别中文就有一定难度。要获取到更为有用的关键词来进行查询,需要用中文分词技术把一条中文语句通过程序算法智能分割成一个个单独的词,通过准确的中文分词,达到电脑能够自动识别中文语句含义的效果。[6]目前,在PHP环境中使用的开源中文分词项目也比较多,如使用最广的SCWS[7]中文分词系统,有着分词准确率高、扩展能力强、使用起来简单易用等特点,为微信图书馆数据库查询系统实现智能查询功能提供了技术保障。

[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工程”高校图书馆微信应用现状分析与对策研究[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年度商洛学院人文社科研究项目“数字化时代高校图书馆网络式管理的研究”(项目编号:14SKY022)的研究成果之一。

猜你喜欢
分词服务器公众
公众号3月热榜
分词在英语教学中的妙用
服务器组功能的使用
公众号9月热榜
公众号8月热榜
公众号5月热榜
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
结巴分词在词云中的应用
结巴分词在词云中的应用