Php 最佳文本匹配的MySQL搜索查询

Php 最佳文本匹配的MySQL搜索查询,php,mysql,search,Php,Mysql,Search,我正在努力为用户提供更好的搜索体验,我们有很多产品的长标题,如: Loptop Acer V3-772 17.3 HD+/Intel Core i7-4702MQ iki 3.2Ghz/4Gb DDR3 1600Mhz/1Tb HDD/GeForce GTX850 2Gb DDR5/WiFi/HDMI/Bluetooth/HD camera/USB 3.0 所以,如果客户机正在寻找:Acer 4Gb 1Tb i7 loptop,MySQL函数为%…%,它会很快找到它,但如果没有找到像i7这样的一

我正在努力为用户提供更好的搜索体验,我们有很多产品的长标题,如:

Loptop Acer V3-772 17.3 HD+/Intel Core i7-4702MQ iki 3.2Ghz/4Gb DDR3 1600Mhz/1Tb HDD/GeForce GTX850 2Gb DDR5/WiFi/HDMI/Bluetooth/HD camera/USB 3.0

所以,如果客户机正在寻找:Acer 4Gb 1Tb i7 loptop,MySQL函数为%…%,它会很快找到它,但如果没有找到像i7这样的一个结果,查询将给出0个结果

我们试图通过每个搜索关键字进行搜索,然后用给出最多结果的关键字进行计数,并在其中搜索2个和3个类似的组合词

或者有什么更简单的解决方案来实现这种全搜索

更新:大家好,
因此,我为我的任务找到了一个解决方案-在my.ini文件中重新配置的最小1个符号的全文搜索,因此它会按其应有的方式查找i7和所有其他小型搜索,感谢您的帮助:

更好地完成您试图实现的目标:

$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 ";

   }
注:
假设描述字段包含表\u name

中产品的详细信息,您尝试过全文搜索吗?您目前得到了什么代码?是的,搜索分为两部分,第一部分是全文,第二部分是类似的,现在我想让它成为一个普通的搜索功能。只是在尝试进行搜索时迷失了方向,大量的谷歌搜索,这是我最后的求助手段。@j08691:全文搜索是针对“自然”语言进行优化的–使用像“i7”这样的短搜索词在这里,您将立即遇到它的限制。@CBroe-短期i7问题可以通过将ft_min_word_len更改为2来解决。谢谢您的时间,正如我在问题中提到的,现在我使用全文搜索,效果非常好。
mysql_query("SELECT * FROM table_name WHERE ".$q_string);