解决phpcms v9搜索结果缺少及搜索信息不准确的问题:phpcms v9搜索存在很多问题,分词搜索好多只有一条数据,修改后搜索出来的又不准确,希望下面的方法能帮你找到新的解决思路和办法。
打开phpcms\modules\search\index.php
 
方法一:
找到
if(!empty($segment_q)) {
$sql = "`siteid`= $siteid AND `typeid` = $typeid $sql_time AND MATCH (`data`) AGAINST ($segment_q IN BOOLEAN MODE)";
}else {
$sql = "`siteid`= $siteid AND `typeid` = $typeid $sql_time AND `data` like %$q%";
}替换为:
$sql = "`siteid`= $siteid AND `typeid` = $typeid $sql_time AND `data` like %$q%";
 
虽然解决了搜索不到数据的问题,但新的问题随之而出,搜索出来的好多信息不准确的,(我主要是做明星搜索)所以经过研究,根据分词长度判断终于找到较完美的解决,通过这样搜索出来的词精确多了,基本上不会出现没有关系的搜索结果。。希望新的思路可以让大家想到更好的解决办法,方法如下:
 
方法二:
//如果分词结果为空
if(!empty($segment_q)) {
$length = strlen($segment_q);
$q_key = "'".$segment_q."'";
if($length>=9){
$sql = "`siteid`= '1' AND `typeid` = '$typeid' AND (SELECT (LENGTH(`data`)-LENGTH(REPLACE(`data`,$q_key,'')))) >17";
}else{
$sql = "`siteid`= '1' AND `typeid` = '$typeid' AND (SELECT (LENGTH(`data`)-LENGTH(REPLACE(`data`,$q_key,'')))) >11";
}
} else {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' AND `data` like '%$q%'";
}

版权声明:若无特殊注明,本文皆为( yueshuo )原创,转载请保留文章出处。