关于discuz 不能全文搜索的问题


这个问题客服反馈很多次了,以为discuz 默认搜索只能搜标题,除非配置了sphinx全文搜索引擎。

但是之前比较老的员工说以前能用的,也就是discuz老版本。

今天突然想到是不是discuz纵横搜索的关闭引起了,官网走了一遍后确实这个搜索引擎已经不维护了。

天气比较凉爽,状态也还可以,所以去看了一下搜索的源码,发现有全文搜索的逻辑在,一遍测试后发现,原来是数据库编码和页面编码不统一,所以即使选择全文搜索,也是找不到记录了

在查看discuz的配置问题,congfig_global.php 发现有一项$_config['output']['forceheader'] = 1; 默认是1 ,改为了0,搜索就有记录了。

研究这个配置的走向,发现原理是

处理结果的search_forum.php 页 是不会渲染模板的,也就是页头不会有meta 设置的编码类型。所以这个时候$_config['output']['forceheader']  = 1 就会强制php 用@header('Content-Type: text/html; charset='.CHARSET); 输出一个编码,

把$_config['output']['forceheader'] = 0; 后,php 就不输出编码,由浏览器判断,这样就可以和数据库的编码匹配,两边编码一致,所以能搜索成功!

但是有个疑问,之前只是不能全文搜索,但是标题是可以搜索到的。这个我还没弄明白什么意思。