登录 注册

登录

问题 修改 Joomla! 1.5 搜索组件以改变搜索字串长度限制

更多
2007年12月25日 06:23 #1 作者: Joomla之门
由于 Joomla! 是国外开发的,所以他们考虑到一般西文词汇中实词长度都在至少3个字符以上,因此 Joomla! 内置的站内搜索要求最少输入3个字符才能搜索。而对于中国人则不然,例如 QQ 这个词对老外可能没有意义,对我们却是有意义的;或者,我希望在一篇文章中搜索“髡”这个词,但是 Joomla! 默认却拒绝,因为长度只有一个字符。

这个限制在 Joomla! 1.0 版本和 1.5 版本都有。1.0 版本的解决方法见: http://www.joomlagate.com/component/option,com_smf/Itemid,31/topic,311.msg1188/#msg1188

对于 Joomla! 1.5,同样可以修改 com_search 组件来实现:

打开 /administrator/components/com_search/helpers/search.php 这个文件,在大约第 63 行,找到如下代码:
if ( $searchword && JString::strlen( $searchword ) < 3 ) {

修改为:
if ( $searchword && JString::strlen( $searchword ) < 1 ) {

意思是,只要输入最少1个字符就可以开始搜索。上述方法经测试可以工作。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年12月25日 13:39 #2 作者: rongjunxue
多谢白老大指点,按此方法,已顺利解决搜索字符数限制问题!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年01月25日 21:08 #3 作者: oicqonly
我改成2,即迎合中文习惯,又不至于让加重服务器负担的企图有可乘之机。其实改这个 我个人认为也不是完美的解决方案。最好能参照不同的编码和字符集,让管理员自己在后台设置。

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年01月25日 22:14 #4 作者: Joomla之门
oicqonly 说的没错!我曾经在官方论坛建议他们增加一个后台选项,让管理员来决定最少可以搜索的字符数量 ,但是没有被采纳。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年01月26日 15:38 - 2008年01月26日 15:44 #5 作者: oicqonly
西方人就是这样,只懂得强行推行自己的价值观,很少去聆听更别说包容。
小于3几乎符合所有西文的特征(英、法、拉丁……),
西文的特征是“表音”的,用有限个字母(如英文26字母表)表示发音,进而表示语义。
单个字符对于西文只是字母和标点,无实际意义。且所有西文语言系统的语义,均有这有限的字母来表示。因此如果允许单个字母搜索,势必照成服务器负担极具增加,且搜索结果毫无意义。例如,很难想象哪篇英文文章不含字母‘a ’。
同样,2个字母的排列组合在西文字符系统中大都不被使用,即使使用也是表示一些人人皆知且没有实际意义的词,例如is am be等。在搜索中也无实际意义。
从3开始,才出现大量表示实际意义的实词。

中文是“表意”的,单个字也可以表现具有实际意义的概念。

这些说了也白说,发发牢骚~~~

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年01月26日 15:40 #6 作者: oicqonly
建议老白拉拉声势,先和台湾的朋友切磋切磋,统一意见,以共同名义向官方提出建议,适当的话在联系韩国、日本等小组:)

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年01月27日 09:12 #7 作者: Joomla之门
oicqonly 说的对,很多西方开发人员根本不了解双字节语言文字,如中文、韩文、日文等,他们可能试图去了解,但是难度太大也就放弃了。

一方面,中文用户必须不断去提出 feature requset,另一方面,我希望有开发能力和兴趣的华裔程序员能够积极参与到 Joomla! 开发队伍中,这样更有利于改变局面 —— 否则可能在 Joomla! 小组开会的时候,根本没有人在会议桌上提出对中文支持不好的问题。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年01月28日 15:51 #8 作者: kobebeef
争什麽争...笨蛋!!
混在一起做撒尿牛丸不就好了!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年02月20日 11:40 #9 作者: joomla1986

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年04月20日 01:51 #10 作者: chenxiang861213
我觉得这个问题在于strlen和mb_strlen的区别
比如strlen('测试')返回6
而mb_strlen('测试')返回2

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年05月25日 15:51 #11 作者: lijiancheng

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年07月04日 12:45 #12 作者: huaxinglong
哈哈哈哈哈

争什麽争...笨蛋!!
混在一起做撒尿牛丸不就好了!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年07月04日 12:47 #13 作者: huaxinglong

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年08月31日 13:54 #14 作者: eblise
哦!!是嘛?昨晚我测试了一下刚装的1.5.6,我输入一个“1”也能搜索啊!?!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年09月09日 20:35 #15 作者: xyzs2008

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年09月09日 20:44 #16 作者: xyzs2008
很好 修改成功  我一直有这个困扰  白老大好人啊

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年09月16日 15:25 #17 作者: juane1028

哦!!是嘛?昨晚我测试了一下刚装的1.5.6,我输入一个“1”也能搜索啊!?!

搜索不了吧?

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年09月16日 20:23 #18 作者: 火星漫步者
老白,求助!
我维护的一个网站1.5.6,为什么搜索功能不起作用呢?
无论输入什么(除了英文)都找不到结果。

很奇怪。。。如何修改呢?

多谢了!

专业周易起名改名: www.qimingz.com

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年10月21日 17:14 #19 作者: wowola
搞定~谢老白~

文科菜鸟,不会编程,不会语言……
错误不断学习不断总结不断= =
XAMPP,JOOMLA 1.5.7

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年01月23日 16:22 #20 作者: a278945883
白大哥,从你这学了一招

登录 或者   注册一个会员帐号 来参与讨论