MySQL全文搜索和LIKE组合不会返回最相关/计数的结果

时间:2014-11-11 22:12:22

标签: php mysql full-text-search sql-like

我真的认为下面的查询会首先返回大部分计数/相关结果。搜索(计算机业务)" razer游戏鼠标"。第一次返回的结果有13次,第5次位置的结果是17次。是否有更好的方法来获得最相关的结果。由于我在共享托管上,我无法更改服务器设置,这就是为什么我必须将完整文本和LIKE结合起来。

$searchwords = explode(' ', $SearchGoogle);
$longwords = '';
$shortwords = '';

foreach ($searchwords as $word) {
   if (mb_strlen($word, 'UTF-8')>3) {
      $longwords.=' +'.$word;
   } else {
      if (mb_strlen($word, 'UTF-8')>=2) {
         if (!in_array($val,array('a')))//short words I don't want to have searched
            $shortwords.=" AND Vendor LIKE '%$word%' OR Maincategory LIKE '%$word%' OR Subcategory1 LIKE '%$word%' OR Partnumber LIKE '%$word%' OR Details1 LIKE '%$word%' OR Details2 LIKE '%$word%' OR Details3 LIKE '%$word%'";
        $shortwordsorder.="+(Case When Vendor LIKE '%$word%' OR Maincategory LIKE '%$word%' OR Subcategory1 LIKE '%$word%' OR Partnumber LIKE '%$word%' OR Details1 LIKE '%$word%' OR Details2 LIKE '%$word%' OR Details3 LIKE '%$word%' THEN 1 ELSE 0 END)";
  }
  }
}

$query = mysql_query("SELECT * From Pricelist Where MATCH (Vendor, Maincategory, Subcategory1, Partnumber, Details1, Details2, Details3, Subcategory1) AGAINST ('$longwords') $shortwords Order by Field(Vendor, '$SortedByValues') Desc, (MATCH (Vendor, Maincategory, Subcategory1, Partnumber, Details1, Details2, Details3, Subcategory1) AGAINST ('$longwords')) $shortwordsorder Desc Limit $RecordcountMoreResults, 50");

在MATCH语句中使用Boolean将返回更无关的结果。

0 个答案:

没有答案