Ho una query di ricerca che esegue una ricerca di testo completo sul DB.Ricerca full text MySQL su più colonne: confusione dei risultati
$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)";
Quando cerco 'Cardozo, Horacio' o 'Cardozo' o 'Horacio' ottengo alcun risultato però so che c'è un artista con 2 record nel DB con artist_full_name = Cardozo, Horacio.
Se rimuovo tutti i campi MATCH e ho solo al
. artist_full_name
Ottengo 2 risultati. Se aggiungo al
. description
Ottengo 1 risultato perché 'Horacio Cardozo' esiste nella descrizione.
C'è un modo per fare in modo che la ricerca restituisca tutti i record se qualche condizione (qualsiasi parola di ricerca) è soddisfatta in uno dei campi MATCH? Ho provato a rimuovere IN BOOLEAN MODE ma questo ha prodotto gli stessi risultati.
Invece di 'IN MODALITÀ BOOLEAN', provare' IN MODALITÀ LINGUA NATURALE' –
'IN MODALITÀ LINGUA NATURALE' è la modalità predefinita (ad esempio, quando non viene specificata alcuna modalità) – RandomSeed
produce ancora 0 risultati durante la ricerca.Ho controllato che tutti i campi in DB fossero fulltext ma ancora nulla. – puks1978