MySQL搜索查询以获得最佳文本匹配

时间:2014-08-11 14:11:27

标签: php mysql search

我试图为用户提供更好的搜索体验,我们为以下产品提供了很多长标题:

" Loptop Acer V3-772 17.3"高清+ /英特尔酷睿i7-4702MQ iki 3.2Ghz / 4Gb DDR3 1600Mhz / 1Tb硬盘/ GeForce GTX850 2Gb DDR5 / WiFi / HDMI /蓝牙/高清摄像头/ USB 3.0 "

所以,如果客户正在寻找:" Acer 4Gb 1Tb i7 " loptop,MySQL函数LIKE%...%它发现它很快,但如果一个结果像" i7 "找不到,查询给出0结果。

我们正在尝试按每个搜索关键字进行搜索,然后使用搜索关键字进行搜索,并在其中搜索2个和3个组合的LIKE字词。

或者,为了实现所有搜索,还有更简单的解决方案吗?

更新:大家好, 所以我得到了我的任务解决方案 - 最小1符号的全文搜索,在my.ini文件中重新配置,所以它寻找" i7"以及所有其他小搜索,感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

更好地做你想要实现的目标:

$search_key = $_POST['searchkey'];  //take the search text from the post method

$search_words = array();
$search_words = explode(" ",$search_key);



$q_string = "";
$last_index = intval(count($search_Words)) - 1;

for($i = 0; $i<count($search_Words);$i++)
  {
    $q_string = $q_string . " description LIKE '%$search_words[$i]%' ";
    if($i != $last_index)
      $q_string = $q_string . " OR ";

   }

然后是最后一次

mysql_query("SELECT * FROM table_name WHERE ".$q_string);

注意: 假设{table}名称description字段表示产品的详细信息