微课管理系统站内搜索增强研究与实现
2017-12-21叶文全
叶文全
摘要:本文结合分词搜索、相关度排序、自定义分页,并使用存储过程实现搜索。在搜索的准确性、相关度、性能、安全等方面都有较大的改良,较好的解决了微课管理系统的站内搜索难题。
关键词:微课;分词搜索;相关度排序;存储过程
中图分类号:TP391.3 文献标识码:A 文章编号:1007-9416(2017)10-0035-02
伴随着微课在高校教学中的应用日益普及,越来越多的高校根据自身需求,对微课管理系统进行自主研发或二次开发。站内搜索是微课管理系统中的一个重要功能,直接影响了用户能否快速搜索到所需要的微课资源。使用搜索引擎平台提供的站内搜索(如:百度站内搜索),存在着数据收录延迟与收录不全的缺陷,同时。纯粹模糊查询的站内搜索相关词无法匹配且容错性低,也不能满足微课管理系统中站内搜索的需求。因此,急需一种可行性高、适用于高校自建微课管理系统的搜索方案。系统开发借鉴主流搜索引擎的搜索原理,以闽北职业技术学院微课管理系统(以下简称系统)为开发实例,从分词搜索、相关度排序、自定义分页三个方向进行研究,并使用存储过程实现系统站内搜索功能。
1 搜索增强方案研究
系统搜索的重点并不是把大量的微课资源搜索出来,而是在注重搜索准确性的同时提高搜索的容错性,将搜索结果按相关度进行排序,并以分页的方式高效的呈现给用户。
1.1 分词技术
分词技术指搜索引擎针对用户提交查询的关键词串进行的查询处理后根据用户的关键词串用各种匹配方法进行分词的一种技术[1]。分词技术经过大量的实践应用,发展至今已十分成熟。分词技术包括3种方法,分别是:字符串匹配的分词方法、词义分词法、统计分词法。分词准确性对搜索引擎来说十分重要,但如果分词速度太慢也会影响分词效果。因此,分词的准确性与速度是分词技术的两个重要指标。
1.2 中文分词
中文分词指的是将一个汉字序列切分成多个单独的词,是一个将连续的字序列按照一定的规范重新组合成词序列的过程[2]。虽然分词算法十分成熟,但在中文分词中仍然存在两大难点:
(1)歧义识别:歧义指一个句子可能有多种切分方法。包含交叉歧义和组合歧义,组合歧义必须根据整个句子来识别,比交叉歧义更难。(2)新词识别:新词指专业术语未登录词。新词中的人名、机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,且使用频率较高。目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。
1.3 中文分词系统
由于中文分词在实现上难度大、投入高,对于高校自建的系统而言,使用现成的中文分词系统用以解决搜索过程中的分词难题,投入小、见效快,是一种不错的解决方案。中文分词系统比较有代表性的包括:汉语词法分析系统(ICTCLAS)、基于HTTP协议的开源中文分词系统(HTTPCWS)、简易中文分词系统(SCWS)、PHP无组件分词系统(PhpanAlysis)。以上4种中文分词系统对于中文分词、词性标注、命名实体识别、新词识别、支持用户词典都有较强的功能支持,能够解决搜索过程中的分词难题。
简易中文分词系统(SCWS)提供了分词API,可供用户直接调用,让用户省去了分词系统搭建与词库维护的工作。SCWS分词API仅支持POST请求方式,其请求参数变量及含义如表1所示。
在保障分词功能的基础上结合投入的成本与使用的便捷,系统采用简易中文分词系统(SCWS)提供的分词API进行分词,并将分词API调用过程封装成一个方法。
1.4 相关度排序
相关度指的是查询关键字与查询结果的匹配相关度。相关度排序可以将匹配越高的查询结果越靠前显示,从而让用户更快的查阅到自己想要的数据。搜索引擎会对搜索结果用算法进行排序后再显示,相关度涉及到的因素较多,不同的搜索引擎其算法也有所区别。
基于关键字词频的相关度算法指的是关键词在被搜索内容中出现的次数越多则匹配相关度越高,在搜索结果中排序越靠前。在MSSQL中并没有提供计算关键词在被搜索内容中出现次数的函数,因此,需要编写一个UDF来实现计算关键词在被搜索内容中出现的次数,供执行搜索操作的存储过程调用。对于自建微课管理系统而言,在选用相关度算法时要结合实现的难度与后期维护的工作量。经分析,系统采用基于关键字词频的相关度算法,并结合发布时间与访问量进行排序。
1.5 自定义分页
搜索的过程涉及数据读取与数据呈现,当数据量较大时消耗的时间会较多。为了进一步提高搜索性能,使用自定义分页对数据进行读取与呈现,可提高数据读取和数据呈现两个环节的性能。普通分页与自定义分页相比,如图1、图2所示。
通过图1与图2的对比,自定义分页基于存储过程实现,只读当前页數据,直接绑定数据控件无需再次分页,与普通分页相比性能得到了较大的改良。
2 搜索增强方案实现
根据对搜索增强方案的研究,系统搜索增强的实现主要围绕分词功能、相关度算法、自定义分页。系统使用ASP.NET+MSSQL 2008进行开发,搜索过程基于存储过程实现,提高了搜索的执行效率、减少网络流量、增强安全性[3]。
2.1 分词功能实现
分词功能采用调用简易中文分词系统(SCWS)提供的分词API来实现。分词功能封装在类FenChi.cs中,以公共的静态方法public static string Segment(string keyWord)供系统调用。当用户输入的关键词少于3个字时,则不需要做进一步分词,3个字及3个字以上时,调用SCWS提供的分词API。采用HttpWebRequest提交数据、HttpWebResponse接收API回调数据,回调数据以Josn格式返回,并利用Newtonsoft.Json.Linq.JObject对回调数据进行处理,通过foreach循环以字符串的形式返回分词结果,多个分词之间使用空格隔开。
2.2 相关度排序实现
系统采用基于关键字词频的相关度算法实现对搜索结果的相关度计算,在SQL Server编写方法WordCount(供微课资源搜索存储过程SourceSearch调用),该方法实现关键词在某个字段出现次数的计算,具体参数如表2所示。
用户输入的关键词经过分词处理后,从一个到多个不等,GOOGLE的最大词语限制是10个。本系统把参数固定为@word1~@word5,当超过5个分词时,忽略不计,少于5个的地方视为空。系统站内搜索针对微课资源表的标题与相关词两个字段进行搜索,标题权重值为2,相关词权重为1。相关度查询代码如图3所示。
Rank值越大,相关度越高,Rank值为0的则不是所要搜索的结果。
2.3 自定义分页实现
系统自定义分页在存储过程Source Search中实现,采用创建临时表,临时表包含行号(标识列)与资源编号,按行号来读取所需要页面的数据并与微课资源表关联从而实现自定义分页。
3 结语
本文结合分词搜索、相关度排序、自定义分页三个角度,研究出了一种基于存储过程实现的微课管理系统站内搜索增强方案,并对其主要实现进行了阐述。系统站内搜索功能经过测试,在搜索的功能、性能上都有了较大的提升。
参考文献
[1]曹卫峰.中文分词关键技术研究[D].南京理工大学,2009.
[2]梁喜涛,顾磊.中文分词与词性标注研究[J].计算机技术与发展,2015,(02):175-180.
[3]周莹.基于关键词相关度的搜索引擎设计——以天津电大远程教育资源库为例[J].天津电大学报,2011,(03):43-46.endprint