当前位置:首页>>Discuz学习教程

discuzx3.x文章全文检索的实现方法和步骤

点击数:996 更新时间:2017-05-20 12:16:00 来源: 昕竹轩网站设计-返回

首先说明啊,这个检索是直接用like来弄的,所以,如果你的站数据量大,这样很吃系统,自己掂量着办,我研究了下利用sphinx的,结果搞定了才发现这个只是针对论坛的帖子。搜索门户中的文章,并不是按这个走的,而且利用sphinx这个啊,要么只能分中文要么只能分英文(学艺不精没细了解啊,个人测试是这样的)。而我目前碰到的要求是需要对文章也执行like。所以,经过研究,类比了下搜索文章标题的功能,成功实现了discuzX3对门户中的文章进行全文检索的功能,以下操作方法discuz版本为20140101的X3.1。具体方法如下:

1.用notepad++或其他文本编辑器打开下述文件
网站目录\source\class\table\table_portal_article_content.php
2.在下面的

复制代码 代码如下:
class table_portal_article_content extends discuz_table

if($count)
return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' %i %i %i '.DB::limit($start, $limit), array($alias, $where, $order));
}
变为:

复制代码 代码如下:
class table_portal_article_content extends discuz_table

if($count)
return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' %i %i %i '.DB::limit($start, $limit), array($alias, $where, $order));
}
上面添加那个方法才能用$query = C::t(‘portal_article_content’)->fetch_all_by_sql。
3.打开
网站目录\source\module\search\search_portal.php
搜索

复制代码 代码如下:
 foreach($query as $article)
在其后添加如下代码:

复制代码 代码如下:
if($num==0)%'", true);
$query = C::t('portal_article_content')->fetch_all_by_sql(' 1 '.$srchtxtsql, 'ORDER BY aid DESC ', 0, $_G<'setting'><'search'><'portal'><'maxsearchresults'>);
foreach($query as $article)
}
上面代码的意思是,如果搜标题没搜到,那就用like来搜文章的内容。
保存后,更新下discuz的缓存,搜文章里的内容试试,如果能搜到,OK,大功告成~

本资讯信息是来自 昕竹轩工作室 小编 通过网络收集而来的关于discuz网站开发,使用、安装、架设相关的学习资源。
您若也有需要分享的可以直接在我们网站上分享你的内容,让大家都知道。
版权声明,本活动信息隶属网络收集而来若有侵权请联系我们,我们将及时清除信息。

广告位
【责任编辑:CSW8923 (Top) 返回页面顶端
【必备推荐】(Top) 返回页面顶端
【精品案例】更多案例展示
【最新留言】 (Top) 返回页面顶端
共有0条评论
重要提示:
你设置的联系邮箱是*: (当有人给你留言回复之时,联系邮箱可以及时通知你)
我们建议你填写正确的邮箱地址,如果你之前填写邮箱地址是错误的可以通过 【修改资料】 来重新设置
登录 | 免费注册 | 忘记密码 | 邮箱:CSW8923@126.com     服务电话:17895923895   客服QQ:568441621 点击这里给我发消息
Copyright © 2014-2015 Htmcss.Com All Rights Reserved  版权所有昕竹轩网站设计 备案号:闽ICP备16024510号-4
关闭