如何使用 php pdo 进行全文搜索?

how to do a full text search with php pdo?

所以我在当前搜索网站时遇到了问题。所以我目前的搜索将实现这一目标; 用户输入 "crik",它将 return "cricket" 进行搜索。 但是,如果用户输入 "crickets" 它不会 return "cricket" 进行搜索。 我如何让它工作? 我当前的 php 代码是;

      $searchQ = $_GET['search'];  
      $ssss = $pdo->prepare('SELECT * FROM listing WHERE name LIKE :search');                                    
      $ssss->bindValue(':search', "%" . $searchQ . "%");        
      $ssss->execute();

我也试过这个,但它没有 return 任何东西;

$ssss = $pdo->prepare('SELECT  * FROM listing WHERE MATCH(name) AGAINST (:search IN BOOLEAN MODE) ');

如果您希望输入 crickets 匹配名称 cricket,您也可以在名称列上使用通配符,例如:

$ssss = $pdo->prepare("SELECT * FROM listing 
                       WHERE name LIKE :search1 
                       OR :search2 LIKE CONCAT('%', name, '%')");
$ssss->bindValue(':search1', '%' . $searchQ . '%');
$ssss->bindValue(':search2', $searchQ);

或更短且更一致(我不确定绑定是否会以这种方式工作,但您可以尝试):

$ssss = $pdo->prepare("SELECT * FROM listing 
                       WHERE name LIKE CONCAT('%', :search, '%')
                       OR :search LIKE CONCAT('%', name, '%')");
$ssss->bindValue(':search', $searchQ);

您可以更改搜索字符串

$searchQ = $_GET['search'];
$searchArr = str_split($searchQ );
$searchQ_new = "";
foreach($searchArr as $alpha)
{
        $searchQ_new .= $alpha . "%";
}

现在您可以使用您的代码通过 $searchQ_new

进行搜索