如何在不同的组合中搜索多个单词标题

时间:2014-10-21 05:27:59

标签: php mysql

我有像“销售和业务发展经理”这样的职位。 当我搜索这个单词时我想要这样的结果:

条件1:首先显示完整的搜索词作业标题结果。

条件2:显示3个单词组合结果作为第二优先级。

条件3:将2个单词组合结果显示为第3个优先级

如何在php mysql中实现这个逻辑。以及如何根据条件订购结果数据

我试过这个

 $str='Sales and Business Development Manager';
    $arr=explode(" ",$str);
    $cnt=count($arr);
    $search1=" where job title like '%$str%'";
    if($cnt>3)
     {
      $word1=$arr[0]." ".$arr[1]." ".$arr[2];
      $word2=$arr[1]." ".$arr[2]." ".$arr[3];
      $word3=$arr[2]." ".$arr[3]." ".$arr[0];
      $word4=$arr[3]." ".$arr[0]." ".$arr[1];
      $word5=$arr[2]." ".$arr[0]." ".$arr[1];
      $word6=$arr[1]." ".$arr[0]." ".$arr[2];
      $search2.=" or job title like '%$word1%" or job title like '%$word2%' or job title like   '%$word3%' or job title like '%$word4%' or job title like '%$word5%';
     }
     $qry=mysql_query("select * from jobs $search1 $search2"); 

我也在使用全文搜索。 请告诉我如何实现这种逻辑。根据搜索词搜索和订购数据。

1 个答案:

答案 0 :(得分:0)

你可以试试这个。我已在我给出的示例代码中添加了一些注释。

<强>代码:

$str='Sales and Business Development Manager';
$arr=explode(" ",$str);
$cnt=count($arr);
$search1=" WHERE job title LIKE '%$str%'"; /* SHOULD FIX THAT job title COLUMN NAME */

$search2="";

  for($x=0;$x<=$cnt;$x++){ /* LOOP THE RESULT OF THE EXPLODE */

    $search2=$search2." OR title LIKE '%".$arr[$x]."%'"; /* PUT THEM ALL TOGETHER IN A SINGLE VARIABLE */

  }

$qry=mysql_query("SELECT * FROM jobs $search1 $search2");  /* YOUR QUERY */

<强>注释:

  • 请替换job title列名称。