关于jforum2.1.6中文问题

文章出处:我的博客 我的生活

jforum是基于英语系的(尤其在全文检索的时候-当然可以采用Lucene加以改造-正在研究中...)。

在安装jforum2.1.6的过程中遇到几个问题,记录下来以做备份之用。


1、和WEB-INF同一层次,缺少tmp文件夹。如果没有的话,发表贴子,附件不能正常发布。


2、中文检索的时候出现问题(必须贴子主题或内容超过3个字才可以)。可以查看net.jforum.dao.generic.GenericSearchIn­dexerDAO类中insertSearchWords(List
posts)方法,在post的时候会往表jforum_search_words和jforum_search_wordmatch中插入检索的关键词语。i­nt
minWordSize =
SystemGlobals.getIntValue(ConfigKeys.SEARCH_MIN_WORD_SIZE);int
maxWordSize =
SystemGlobals.getIntValue(ConfigKeys.SEARCH_MAX_WORD_SIZE);分别设置了关键词的最大和最 小长度­(英语一般都会超过三个字母,所以最小值为三:可以在SystemGlobals.properties中配置 search.min.word.size
= 3 search.max.word.size = 100)
所以如果作为中文论坛的话,一当少于3个字,会抛出java.lang.StringIndexOutOfBoundsException:
String index out of range:
-1的异常,自然上面提到的两张表中不会插入检索数据。一种比较笨的方式是设置search.min.word.size = 1,可以实现,不过效率随着论坛量的增加会明显降低。

net.jforum.dao.generic.GenericSearchDAO类中topicsByKeyword(SearchData
sd)方法:有这样的语句:boolean isLike =
"like".equals(SystemGlobals.getValue(ConfigKeys.SEARCH_WORD_MATCHING).trim (­));,也是在SystemGlobals.properties中配置,默认为search.word.matching
= equals。
就是默认采用非like的方式检索数据库,这样在海量数据的时候会大大提高检索效率,因为英语是用空格分隔单词的,所以这种方式可以比较好的解决 ­检索问题。对于中文来说,这样检索的话无法实现正常的使用功能,一种简便的方式就是更改配置文件:如 search.word.matching
= like,使用like的方式工作。对于一般的小型应用足以对付。对于海量数据,效率是相当差的,一种可以采用数据库提供的搜索引擎来弥补,还有的就是文前提到­的采用Lucene来实现全文搜索。


以上只是一些个人的看法,希望得到指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值