2014-06-23
首先说明啊,这个检索是直接用like来弄的,所以,如果你的站数据量大,这样很吃系统,自己掂量着办,我研究了下利用sphinx的,结果搞定了才发现这个只是针对论坛的帖子。搜索门户中的文章,并不是按这个走的,而且利用sphinx这个啊,要么只能分中文要么只能分英文(学艺不精没细了解啊,个人测试是这样的)。而我目前碰到的要求是需要对文章也执行like。所以,经过研究,类比了下搜索文章标题的功能,成功实现了discuzX3对门户中的文章进行全文检索的功能,以下操作方法discuz版本为20140101的X3.1。具体方法如下:
1.用notepad++或其他文本编辑器打开下述文件
网站目录sourceclasstabletable_portal_article_content.php
2.在下面的
复制代码代码如下:
class table_portal_article_content 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));
}
变为:
复制代码代码如下:
class table_portal_article_content 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));
}
上面添加那个方法才能用$query = C::t(‘portal_article_content’)->fetch_all_by_sql。
3.打开
网站目录sourcemodulesearchsearch_portal.php
搜索
复制代码代码如下:</p>
<p> foreach($query as $article) {
$ids .= ','.$article['aid'];
$num++;
}
在其后添加如下代码:
复制代码代码如下:
if($num==0){
list($srchtxt, $srchtxtsql) = searchkey($keyword, "content LIKE '%{text}%'", 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) {
$ids .= ','.$article['aid'];
$num++;
}
}
上面代码的意思是,如果搜标题没搜到,那就用like来搜文章的内容。
保存后,更新下discuz的缓存,搜文章里的内容试试,如果能搜到,OK,大功告成~
荒野乱斗腾讯版最新版下载v61.108.1 安卓qq登录版
策略塔防 1.14G
下载益智拼图游戏免费版下载v2.3 安卓版
休闲益智 15.7M
下载宝宝摄影师游戏下载v9.87.00.00 安卓版
其它手游 96.3M
下载宝宝日常安全宝宝巴士最新版下载v9.87.00.00 安卓手机版
其它手游 92.1M
下载绝区零越南服(ZenlessZoneZero)下载v2.0.0 安卓版
角色扮演 309.5M
下载宝宝认知大全宝宝巴士最新版下载v9.87.00.00 安卓版
其它手游 111.9M
下载宝宝情商养成宝宝巴士游戏下载v9.87.00.00 安卓版
其它手游 104.4M
下载海岛奇兵多酷版下载v59.1.1 安卓版
策略塔防 475.0M
下载豌豆荚海岛奇兵手游下载v59.1.1 安卓最新版
下载
海岛奇兵魅族账号登陆版下载v59.1.1 安卓最新版
下载
美美小店微信登录版下载v1.8.3420 安卓版
下载
宝宝巴士百变职业游戏(改名奇妙的职业)下载v9.87.58.00 安卓最新版
下载
奇妙美食总动员官方版下载v9.86.00.00 安卓版
下载
宝宝果汁商店宝宝巴士下载v9.86.00.00 安卓官方版
下载
奇妙的节日手工宝宝巴士下载v9.87.00.00 安卓手机版
下载
2025使命召唤手游官方正版下载v1.9.51 安卓手机版
下载