最近的一个项目里要用wiki作为底层模型的知识源,这半个月里先后尝试了JSPWiki,xwiki,mediawiki,对这三个开源wiki都做了很多了解,在这里记录一下。
JSPWiki
开始时候找到JSPWiki,JSPWiki的基本功能都是有的,但问题是它采用了文件的方式,而不是数据来存储数据,这在我们后期分析数据、为项目提供知识源时候会有很大的困难,因此没有过多的研究
XWiki
xwiki是一个JAVA编写的比较流行的开源wiki软件了,它支持各种数据库,功能也很完善。
在了解xwiki的过程中,感觉它的功能比JSPWiki强大,除wiki基本功能,还提供博客功能,因此结构上有些复杂。有两点是它的优点,一是他的页面组织方式符合人们的一般思维,即先建分类、再建条目;二是他默认采用所见即所得的编辑器,不需要用户了解特殊的语法规则就能正常使用。但是我在使用中发现,xwiki不支持多级分类,它的一层空间下面,不能包含子空间、而只能包含页面,这样的结构肯定不能满足大型的应用,所以也没有选择它。
另外在了解xwiki数据库结构时,找到了页面内容存储的地方。xwiki页面内容存在xwikircs表中,内容以xml格式存在XWR_PATCH字段中,用
select XWR_PATCH from xwikircs where XWR_DOCID = ......;
可以讲内容读出,可以发现,页面评论在<comment></comment>标签中,页面内容在<content></content>标签中。
mediawiki
mediawiki是用php编写的wiki系统,应该是目前应用最广的了。它的结构比较清晰,但是我在实际体验中,也发现了几点问题:
- mediawiki的页面组织结构不符合一般思维方式,它默认采用的方式是让人先建条目,再建分类,这种方式使得新用户很迷惑
- mediawiki没有提供创建页面和分类的快捷入口。不像xwiki,用户一目了然知道怎么创建分类,然后往分类添加条目,mediawiki需要你阅读它的使用手册后才能明白该怎么创建页面并把它指向某一分类,这就提高了用户的使用门槛,我认为不够易用
- mediawiki没有默认使用所见即所得编辑器,用户需要了解基本的编辑语法才能正常使用编辑功能
发现这些问题后,我的工作就是寻找各种插件试图提高易用性和分析它的数据库了。
mediawiki数据库结构图见附件1
经过逐表观察,发现页面内容存在text表中old_text字段,内容以BLOB格式存储,所以读出来还得写代码将二进制流转换为String,以下是代码:
String sql ="select * from mw_text";
ResultSet rs=stmt.executeQuery(sql);
int i =1;
while(rs.next()){
Blob blob=rs.getBlob("old_text");
BufferedInputStream bi=new BufferedInputStream(blob.getBinaryStream());
byte[] data=new byte[(int)blob.length()];
String output="";
bi.read(data);
output=new String(data);
bi.close();
System.out.println("第"+i+"条记录");
System.out.println(output);
System.out.println();
i++;
}
同时,为了让mediawiki符合一般的使用习惯,我在官网上看了很多的插件,地址
http://www.mediawiki.org/wiki/Category:Extensions
尝试了很多插件,发现下面几个比较好
- NiceCategoryList,效果如图
- CategoryTree,效果如图
- ArticleToCategory2,效果如图
- ManageCategories,效果如图
- fckeditor
- inputbox,效果如图
- 描述: mediawiki数据库关系图
- 大小: 257.7 KB
- 大小: 6.4 KB
- 大小: 3.7 KB
- 大小: 2.3 KB
- 大小: 4.6 KB
- 大小: 2 KB
分享到:
相关推荐
JSPWiki是一个基于文本文件的简易wiki系统包括了身份认证和版本控制功能。完全采用JSP/Sevelet开发,采用UTF-8,能很好的支持中文,可以直接使用中文名作为页面(page)名。是一个简单易用的Wiki引擎。
一个开源的jspwiki 供大家学习 这是最新的版本 大家可以下载回来使用
JSPWiki是一个简单的(而非复杂的、庞大的) wiki程序,用Java和JSP写成
JSPWiki is a simple WikiWiki clone. It keeps all of itsformatting in JSP files, and uses a custom Java class calledcom.ecyrd.jspwiki.WikiEngine to all interfacing with the Wiki
jspwiki之mysql版,将文本存储转移到mysql,就更好用了,哈哈,不易啊
JSPWiki安装包,详细安装过程可以查看我写的博客,JSPWiki环境搭建
JSPWiki is a simple (well, not any more) WikiWiki clone, written in ... JSPWiki supports all the traditional wiki features, as well as very detailed access control and security integration using JAAS.
jspwiki jar 包图片
这是一个基于JSP的WIKI工具集,可以很方便地搭建自己的交流平台
jspwiki-2.8.4jspwiki-2.8.4jspwiki-2.8.4
用于搭建JSPWIKI个人站点时使用的中文star_template。
理解并使用 JSPWiki 中的权限控制
JSPWiki,100%Java开发的一套完整WIKI程序,配置非常简单,只需要一个Tomcat环境即可.是学习设计WIKI程序非常好的项目.
JSPWiki是一个不错的wiki引擎,纯jsp/servlet写的。JSPWiki不使用现成的数据库管理软件,所有的文件以文本文件的形式存放。它利用类似CVS的机制保证了文件版本的完整性。支持中文,支持版本比较、权限管理等功能!
NULL 博文链接:https://zhaoyanfangeye.iteye.com/blog/751889
使用jsp servelt开发的 Wiki 系统。 代码公开,界面简洁
最新jspwiki资源 实用的可定制wiki
JSPWiki 2.8.3 使用版,修改了中文乱码问题,可上传中文名称的附件
jsp写的wiki源码,在开源版本的基础上添加了一些功能,并更稳定