和之前写的如何让Discuz!X3对文章进行全文检索开头语一样:这个检索是直接用like来弄的,所以,如果你的站数据量大,这样很吃系统,自己掂量着办!!!
下面来说步骤:
1.
网站目录\source\class\table\table_forum_post.php
打开本文件,搜索:
class table_forum_post extends discuz_table
{
在其后添加方法:
public function fetch_all_by_sql($where, $order = '', $start = 0, $limit = 0, $count = 0, $alias = '') {
$where = $where && !is_array($where) " WHERE $where" : '';
if(is_array($order)) {
$order = '';
}
if($count) {
return DB::result_first('SELECT count(*) FROM '.DB::table($this->_table).' %i %i %i '.DB::limit($start, $limit), array($alias, $where, $order));
}
return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' %i %i %i '.DB::limit($start, $limit), array($alias, $where, $order));
}
2.
网站目录sourcemodulesearchsearch_forum.php
打开文件,搜索:
while($thread = DB::fetch($query)) {
$ids .= ','.$thread['tid'];
$num++;
}
在其下添加如下代码:
if($num==0){
list($srchtxt, $srchtxtsql) = searchkey($keyword, "message LIKE '%{text}%'", true);
$query = C::t('forum_post')->fetch_all_by_sql(' 1 '.$srchtxtsql, 'ORDER BY tid DESC ', 0, $_G['setting']['search']['portal']['maxsearchresults']);
foreach($query as $article) {
$ids .= ','.$article['tid'];
$num++;
}
}
上述代码的意思是,如果搜索结果是0,则对帖子内容进行like形式的搜索,再次说明,like搜索会对系统造成不小的压力,自己掂量着来啊~
本文实现方法比较弱智,但是网站没此类解决办法,所以记录发布出来,供孩子们使用。转载请务必带上我的链接~谢谢。
至此,Discuz!X3对帖子内容实现like形式的全文检索讲解完毕。
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。
留言