2017-02-11 4 views
0

Hallo stackoverflow Gemeinschaft, Ich habe ein Problem mit Mysql Volltextsuche in PHP. Der folgende Code funktioniert, es werden jedoch mehrere Artikel für jedes einzelne übereinstimmende Keyword zurückgegeben. Ich möchte für jedes Keyword einen eigenen Artikel zurückgeben und nach Relevanz sortieren.Mysql Volltextsuche in PHP mit mehreren Werten

Screenshot für den Code unten

enter image description here

Code

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

     }    

     } 

Bitte helfen Sie mir, das Problem zu lösen.

Antwort

0

Ich habe die Lösung des Problems gelungen

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



      } 

Was Bildschirm geschossen wird prouding

enter image description here

+0

was du? Hast zu lösen, was das Problem in diesem Skript war? – denny

+1

Ich habe die Antwort neu bearbeitet. Commare diese zwei Screenshots. Es wird ein Artikel zurückgegeben, unabhängig davon, wie oft das Artikelschlüsselwort in jedem Keyword für die Volltextsuche gefunden wird. Ich habe die Foreach entfernt, die eine Schleife erstellt und perfekt funktioniert. –

+0

Jede Zeile repräsentiert jedes Keyword, das im ersten Screenshot gefunden wurde. Ich hoffe, ich habe dir geantwortet –