2017-02-11 102 views
0

嗨stackoverflow社区, 我在PHP中使用Mysql全文搜索时遇到问题。下面的代码正在工作,但是,它会为每个单个匹配关键字返回多个文章。我想为每个关键字返回一篇不同的文章,并按相关性排序。Mysql在PHP中返回多个值的全文搜索

截屏下面的代码

enter image description here

代码

 function relatedArticle($item, $category){ 
      global $con; 

     $keywords=removePrepositions($item); 

     $keyword_tokens = explode(' ', $keywords); 

      $x=0; 
      $query_result=''; 
     foreach($keyword_tokens as $item) { 

      $x++; 
      $construct = " "; 
      $construct=$item; 

     $query = "SELECT DISTINCT * FROM apps WHERE Match(title) AGAINST ('$construct' IN NATURAL LANGUAGE MODE) and Type = '$category' LIMIT 4"; 

     $query_result=$con->query($query) or trigger_error($con->error."[$query]"); 

     echo"<div id='Big_container_rel'>"; 
      echo"<div id='container_rel'>"; 
     while($row=$query_result->fetch_array()){ 

      echo"<div id='container1_rel'>"; 

      $AdTitle=pre_replace($row['title']); 
      $type= strtolower(pre_replace($row['Type'])); 

      echo"<a href='/".$type."/".$row['appId']."/".$AdTitle."/'><img id='imgMobi' alt=".$row['title']." src='uploads/".$row['image']."'/></a>"; 
      echo"<br/><h4><a href='/".$type."/".$row['appId']."/".$AdTitle."/'>".$row['title']."</a></h4>"; 

      echo"</div>"; 


      } 
      echo"</div>"; 
     echo"</div>"; 

     }    

     } 

请帮我解决这个问题。

回答

0

我设法解决这个问题

function relatedArticle($item, $category){ 
       global $con; 

      $keywords=removePrepositions($item); 

      $keyword_tokens = explode(' ', $keywords); 

       $query_result=implode(',', $keyword_tokens); 
       $construct=''; 

      $construct=$query_result; 
      $query = "SELECT DISTINCT * FROM apps WHERE Match(title) AGAINST ('$construct' IN NATURAL LANGUAGE MODE) and Type = '$category' limit 4"; 

      $query_result=$con->query($query) or trigger_error($con->error."[$query]"); 

      echo"<div id='Big_container_rel'>"; 
       echo"<div id='container_rel'>"; 
      while($row=$query_result->fetch_array()){ 

       echo"<div id='container1_rel'>"; 

       $AdTitle=pre_replace($row['title']); 
       $type= strtolower(pre_replace($row['Type'])); 

       echo"<a href='/".$type."/".$row['appId']."/".$AdTitle."/'><img id='imgMobi' alt=".$row['title']." src='uploads/".$row['image']."'/></a>"; 
       echo"<br/><h4><a href='/".$type."/".$row['appId']."/".$AdTitle."/'>".$row['title']."</a></h4>"; 

       echo"</div>"; 


       } 
       echo"</div>"; 
      echo"</div>"; 



      } 

什么是prouding屏幕截图

enter image description here

+0

你是怎么解决的?什么是脚本中的问题? – denny

+1

我已重新编辑答案。 Commpare这两个屏幕截图。无论在全文搜索的每个关键字中找到article关键字的次数,它都会返回一篇文章。我已经删除了创建循环并完美工作的foreach。 –

+0

每行代表在第一个屏幕快照中找到的每个关键字。我希望能回答你 –