本文详细介绍了如何完成discuzx3.1文章的全文检索,朋友们一定要参考。
首先,这个搜索是用like立即完成的。所以,如果你的站点信息量很大,你吃系统软件那样的,你可以自己做。我做了一个关于斯芬克斯使用的科学研究,拿到的时候发现这个帖子只针对社区论坛。搜索门户里的文章不是这样的,用的是斯芬克斯,要么中文,要么英文(我学习技巧掌握的不是很好,我考的就是那样)。但是,我现阶段遇到的规定是,文章也要像。因此,经过科学研究,比较了搜索文章标题的功能,discuzX3成功完成了对门户中文章的全文搜索。以下 *** 作步骤为20140101的discuz版本X3.1。具体方法如下:
1。使用记事本或其他文本编辑器打开以下文档
导航\源\类\表\表_门户_文章_content.php
2。复制下面
[/Br/]class="superseo">sstable_portal_article_contentextensionsdiscussion_table[/Br/]{[/Br/][/BrBr/][/Br/]复制代码编码如下:[/Br/]公共函数fetch_all_by_SQL($where,$order='',$start=0,$limit=0,$count=0,$alias=''){[/Br/]&;!is_array($where)?"WHERE$WHERE":'';
if(is_array($order)){
$order='';
}
if($count){
returnDB::result_first('SELECTcount(*)FROM'。DB::table($this->;_table)。%i%i%i。DB::limit($start,$limit),array($alias,$where,$order));
}
returnDB::fetch_all('SELECT*FROM'。DB::table($this->;_table)。%i%i%i。DB::limit($start,$limit),array($alias,$where,$order));
}
变成:
复制代码如下:
classtable_portal_article_contentextensionsdiscussion_table
{
公共函数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){
returnDB::result_first('SELECTcount(*)FROM'。DB::table($this->;_table)。%i%i%i。DB::limit($start,$limit),array($alias,$where,$order));
}
returnDB::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.打开
网站\来源\模块\搜索\搜索_portal.php
Search
复制以下代码:
$num;
}
在它后面添加下面的代码:
复制下面的代码:
if($num==0){
list($srchtxt,$srchtxtSQL)
$query=C::t('portal_article_content')->;fetch_all_by_sql('1'。$srchtxtsql,'ORDERBYaidDESC',0,$_G['setting']['search']['portal']['maxsearchresults']);
foreach($queryas$article){
$ids。=','.$article['aid'];
$num;
}
}
上面的代码意思是,如果没有找到搜索主题,那么使用like搜索文章内容。
保存后,升级discuz的缓存文件,搜索文章中的内容,尝试一下。如果能找到,OK,搞定~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)