老邦 与人为善 与己方便...
解决织梦dedecms站内搜索结果不显示(有些词搜索没有结果或不显示)的问题
发表于: | 分类: 低端技术 | 评论:0

不知道有没有童鞋在在使用织梦CMS建站的时候,站内的搜索功能出现故障了呢,比如你搜索一个词,在后台搜索明明有很多结果的,但是在前台搜索却搜不出任何结果?

但是试着用高级搜索然后按栏目搜索。就能搜索出来,或者在要搜索的关键词中打入一个空格这样也能搜索出来。初步分析原因应该是织梦后台的关键词算法(可能是分词的时候?老邦不知道,没仔细研究过。)。

针对在关键词在用空格隔开后能搜索出来结果的情况,给出了一个解决方案(就是加了一段代码~_~)。原理就是在搜索关键词是自动加上空格。。

[code]
function stringToArray ($string) {
$strlen = mb_strlen($string);
while($strlen) {
$array[] = mb_substr($string,0,1,"utf-8");
$string = mb_substr($string,1,$strlen,"utf-8");
$strlen = mb_strlen($string);
}
return $array;
}
$arrKeywords=stringToArray($oldkeyword);
$newskeyword='';
for ($i=0; $i<=count($arrKeywords); $i++)
{
if($arrKeywords[$i]==" "){
$newskeyword=$newskeyword;
}else{
if (preg_match("/^[\x7f-\xff]+$/", $arrKeywords[$i])) { //兼容gb2312,utf-8
$newskeyword =$newskeyword.$arrKeywords[$i]." ";
} else {
$newskeyword=$newskeyword.$arrKeywords[$i];

}
}
}
$oldkeyword = $keyword =$newskeyword;</pre>
[/code]

上面代码复制到plus目录中的search.php文件中。打开文件找到

[code]
$oldkeyword = $keyword = FilterSearch(stripslashes($keyword));
[/code]

在其后面粘贴上述代码就OK。经过测试是可以的。童鞋们有新方法麻烦告诉老邦。


添加新评论


TOP