如何使用 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
进行搜索
所以我在当前搜索网站时遇到了问题。所以我目前的搜索将实现这一目标; 用户输入 "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
进行搜索