我有一个应该在布尔模式下匹配的查询,它不适用于多个单词,我不知道为什么。如果我搜索一个单词正在工作,当我搜索多个单词时,它不会返回任何内容。
q=$_GET['atr'];
$keys = explode(" ",$q);
$sql = "SELECT * FROM tbl_products
INNER JOIN tbl_products_images_gallery tpig on tpig.id_product=tbl_products.id_product
where MATCH ( tbl_products.name) AGAINST ('";
foreach($keys as $k){
$sql .= " +$k ";
}
$sql .="' IN BOOLEAN MODE ) or ";
$sql .=" MATCH ( tbl_products.slug) AGAINST ('";
foreach($keys as $k){
$sql .= " +$k ";
}
$sql .="' IN BOOLEAN MODE ) ";
$sql .=" ORDER BY tbl_products.name ASC ";
$stmt = $dbh->prepare($sql);
$stmt->execute();
修改
我看到了问题所在。如果一个单词只有2个字母,则找不到该产品。你知道怎么解决这个问题吗?例如:“delta中的excursie”如果我搜索excursie in
它找不到产品,如果我搜索excursie delta
它找到了产品。似乎id对2个字符不起作用。