【问题标题】:Mysql Full text search in PHP returning multiple valuesPHP中的Mysql全文搜索返回多个值
【发布时间】:2017-02-11 08:15:58
【问题描述】:

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

以下代码的屏幕截图

代码

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

        }               

      }

请帮我解决问题。

【问题讨论】:

    标签: php mysql search full-text-search


    【解决方案1】:

    我已经解决了这个问题

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

    什么是引以为豪的截图

    【讨论】:

    • 你解决了什么问题?这个脚本有什么问题?
    • 我重新编辑了答案。比较这两个屏幕截图。无论在全文搜索的每个关键字中找到多少次文章关键字,它都会返回一篇文章。我已经删除了创建循环并完美运行的 foreach。
    • 每一行代表在第一个屏幕截图中找到的每个关键字。我希望已经回答了你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多