在MediaWiki平台下模拟数据库功能

来自Jamesqi
跳转至: 导航搜索

--James Qi 2008年3月19日 (三) 14:21 (CST)

  这段时间一直忙于人工搜索网站的质量检验调整等事宜,在这个过程中进一步积累了一些在MediaWiki平台下模拟实现数据库功能的经验,在下面说说。

Wiki网站的数据库功能需求

  据我所知,国内现在有不少Wiki网站还是使用的MediaWiki平台,虽然有hoodong也推出中文的Wiki软件系统,但似乎功能上还需要完善。MediaWiki的建站、编辑中一直存在用户界面不友好的问题,但其功能却是非常强大的,也远比百度百科目前使用百度自己开发的系统要好得多。

  因为从2006年2月开始设立第一个Wiki网站到现在的两年多时间里,我一直都在使用MediaWiki软件,对这方面可以说了解也算很多了,自己估计在国内比我更熟悉MediaWiki软件使用的人都不会多。

  MediaWiki主要适合做Wiki网站用,并不适合做结构化数据库的应用,但我们这次在人工搜索的应用中就感觉很需要一些辅助的数据库,例如页面的质量检验数据记录(包括质量评分、页面创建者、创建时间、合格者、合格时间、审核者、审核时间、维护周期等),又例如用户的属性记录(包括注册日期、第一个实验页面、是否兼职者、是否审核员等),有了这些数据才能更好地组织管理,可能其它的Wiki网站在深入运作的工程中也会遇到类似的需求。

  国外围绕MediaWiki开发了不少扩展程序,但好像也没有一个扩展能正好符合我们的需要,而自己找人来开发做扩展一直是我们避免的事情,于是想到用通用的扩展程序及MediaWiki自身的功能来实现模拟数据库功能。

  其实需要实现的模拟数据库功能无非就是数据库的结构设置、数据库的数据添加删除修改、数据库的数据查询、数据库的报表输出等基本操作,通过这段时间的实践,我觉得是可以实现的,下面分别说说。

数据库的结构设置

  使用MediaWiki自带的模板功能就可实现,在模板中的参数就是数据库的字段。例如:

{{QC
|质量=

|创建者=
|创建年=
|创建月=
|创建日=

|合格者=
|合格年=
|合格月=
|合格日=

|审核者={{<includeonly></includeonly>subst:CURRENTUSER}}
|审核年={{<includeonly></includeonly>subst:CURRENTYEAR}}
|审核月={{<includeonly></includeonly>subst:#expr:{{<includeonly></includeonly>subst:CURRENTMONTH}}}}
|审核日={{<includeonly></includeonly>subst:CURRENTDAY}}

|维护者=
|维护年=
|维护月=
|维护日=

|维护周期年=
|维护周期月=
|维护周期日=
}}

  上面的例子中,QC就是一个模板,也可以看作一个数据库表的定义,而“质量”、“创建者”、“创建年”等模板参数,就可以看作数据库表的字段。

数据库的数据添加删除修改

  这个比较简单,创建、修改、删除调用定义好模板的页面及其参数,也就是对这个模拟的数据库进行数据添加、删除、修改等操作,例如在“QC:姚明QC:刘翔”这些页面中就可以修改参数。一个页面相当于数据库的一条记录。

数据库的数据查询

  这是比较麻烦的第一地方,仅仅通过MediaWiki自带的Category分类功能实现的功能是很有限的,远远不能满足实际需要,我们主要是使用DynamicPageList2这个叫做动态页面列表的扩展程序来实现的,以前也一直在用这个扩展,主要只是用到其最基本的某个分类新页面列表等功能,而这次为了实现一些联合查询,除了一般的按照分类来查询以外,还可以按照名字空间、链接到的页面、是否使用某模板、页面标题等多种条件来进行联合查询,并可以灵活使用“与、或、非”等逻辑组合。

数据库的报表输出

  以前使用动态页面列表扩展时一般只用到了列表排序、数量控制等简单输出控制,这次在实现质量检验等功能的时候算是见识了这个扩展的强大:可以修改列表抬头、增加页面大小、编辑者、编辑时间、浏览次数,还可以包含符合条件的页面中的部分段落内容到列表中,使用自定义的模式可以仔细控制列表的输出格式。我以前就想到一些查询需要的功能,这次多能够通过实践来实现,真是太好了!具体的用法可以参考DynamicPageList2中的英文说明。

  另外,这段时间的摸索中还对subst替换用法、新增currentuser变量等办法进一步了解掌握,越来越觉得选择MediaWiki真是一个正确的选择!唯一的担心就是在网站中运用到的动态功能太多了,对服务器的负载肯定是有影响的,但现在也还不能量化对负载的影响多少,只能先以实现功能为主,随着网站的流量发展,再来对付负载的问题。

  忙了这一阵,好些天没有写日志了,写了上面这篇枯燥无味的东西,估计很少有人用得着,就留着自己看吧。Face-002.gif

标签:MediaWiki人工搜索数据库
相关内容:
  1. 2010-11-10 22:20:28 MediaWiki-1.15升级到1.16.0步骤
  2. 2010-11-04 22:52:58 开启MediaWiki的搜索建议(Search Suggest)功能
  3. 2010-11-03 11:26:02 MediaWiki-1.15.0升级到1.16.0中出现的问题
  4. 2010-11-02 23:52:05 MediaWiki-1.15准备升级到1.16
  5. 2010-10-22 22:29:00 想写一本关于MediaWiki的书,有人需要吗?
  6. 2010-09-20 11:33:29 直接操作MediaWiki的MySQL数据库
  7. 2010-09-04 00:20:09 修改模板对付MediaWiki及扩展程序的Bug
  8. 2010-08-31 00:47:49 分割大容量MediaWiki数据库
  9. 2010-07-08 23:08:13 用HTML和站间链接减小MediaWiki数据库记录
  10. 2010-06-12 12:27:01 将数据导入MediaWiki进行到底
  11. 2010-06-10 11:33:42 另一个子域名(人工搜索繁体版本)也被墙
  12. 2010-05-22 12:21:42 数据库出了大问题:无法启动、数据丢失、备份失效
  13. 2010-05-20 22:01:46 导入大量名录数据到MediaWiki网站的例子
  14. 2010-05-05 15:06:09 不懂PHP编程也可以修改MediaWiki程序
  15. 2010-04-18 10:01:21 名录数据库集合网站

别名:MediaWiki平台下实现数据库操作在MediaWiki的非结构化数据中部分实现结构化数据库功能

关于“在MediaWiki平台下模拟数据库功能”的留言:

目前暂无留言

新增相关留言