我有一个搜索查询,它在数据库上执行全文搜索。对多列进行MySQL全文搜索:结果混淆
$sql = "SELECT
*
FROM
`tbl_auction_listing` AS `al`
JOIN
`tbl_user` AS `u` ON `al`.`user_id` = `u`.`user_id`
LEFT JOIN
`tbl_gallery_details` AS `gd` ON `al`.`user_id` = `gd`.`user_id`
LEFT JOIN
`tbl_self_represented_details` AS `sr` ON `u`.`user_id` = `sr`.`user_id`
WHERE
`al`.`status` = '" . ACTIVE . "'
AND
`al`.`start_date` < NOW()
AND
`al`.`end_date` > NOW()
AND
MATCH(`al`.`listing_title`,
`al`.`description`,
`al`.`provenance`,
`al`.`title`,
`al`.`artist_full_name`,
`al`.`artist_first_name`,
`al`.`artist_last_name`,
`sr`.`artist_name`,
`gd`.`gallery_name`,
`u`.`username`) AGAINST('$search_query' IN BOOLEAN MODE)";
当我搜索“卡多佐,奥拉西奥”或“卡多佐”或“奥拉西奥”我得到的却没有结果,我知道有2条记录与artist_full_name =卡多佐,奥拉西奥分贝的艺术家。
如果我删除所有MATCH字段并且只有al
。 artist_full_name
我收到2条结果。如果我加入al
。 description
我得到1个结果,因为'Horacio Cardozo'存在于描述中。
如果在任何MATCH字段中遇到任何条件(任何搜索查询词),是否有方法让搜索返回所有记录?我试图删除布尔模式,但产生了相同的结果。
而不是'IN BOOLEAN MODE',尝试'IN NATURAL LANGUAGE MODE' –
'IN NATURAL LANGUAGE MODE'是默认模式(即没有指定模式时) – RandomSeed
搜索时仍然产生0个结果。我已经检查过,DB中的所有字段都是全文,但仍然没有任何内容。 – puks1978