Tôi có một truy vấn tìm kiếm thực hiện tìm kiếm toàn văn bản trên DB.Tìm kiếm toàn văn MySQL trên nhiều cột: sự nhầm lẫn kết quả
$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)";
Khi tôi tìm kiếm cho 'Cardozo, Horacio' hoặc 'Cardozo' hoặc 'Horacio' Tôi không nhận được kết quả tuy nhiên tôi biết có một nghệ sĩ với 2 bản ghi trong db với artist_full_name = Cardozo, Horacio.
Nếu tôi xóa tất cả các trường MATCH và chỉ có al
. artist_full_name
Tôi nhận được 2 kết quả. Nếu tôi thêm vào al
. description
Tôi nhận được 1 kết quả vì 'Horacio Cardozo' tồn tại trong phần mô tả.
Có cách nào để tìm kiếm trả về tất cả hồ sơ nếu có bất kỳ điều kiện nào (bất kỳ từ truy vấn tìm kiếm nào) được đáp ứng trong bất kỳ trường MATCH nào không? Tôi đã cố gắng loại bỏ IN BOOLEAN MODE nhưng đã tạo ra kết quả tương tự.
Thay vì 'IN BOOLEAN MODE', hãy thử' IN NATURAL LANGUAGE MODE' –
'IN NATURAL LANGUAGE MODE' là chế độ mặc định (nghĩa là khi không có chế độ nào được chỉ định) – RandomSeed
Vẫn tạo ra 0 kết quả khi tìm kiếm.Tôi đã kiểm tra rằng tất cả các trường trong DB là toàn văn nhưng vẫn không có gì. – puks1978