8

DB で全文検索を実行する検索クエリがあります。

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

「Cardozo、Horacio」または「cardozo」または「horacio」を検索しても結果は得られませんが、データベースに artist_full_name = Cardozo、Horacio の 2 つのレコードを持つアーティストがいることがわかります。

すべての MATCH フィールドを削除して、al. artist_full_name2 つの結果が得られます。追加するとaldescription説明に「Horacio Cardozo」が存在するため、1 件の結果が得られました。

MATCH フィールドのいずれかで条件 (検索クエリ ワード) が満たされた場合に、検索ですべてのレコードを返す方法はありますか? IN BOOLEAN MODE を削除しようとしましたが、同じ結果が得られました。

4

1 に答える 1