Buongiorno a tutti,
Avendo esigenza di cercare prodotti per attinenza alla stringa inserita, ho modificato parte del codice di modules/articoli/ajax/search.php
sostituendo dalla riga 15
$query = 'SELECT *';
foreach ($fields as $name => $value) {
$query .= ', '.$value." AS '".str_replace("'", "\'", $name)."'";
}
$query .= ' FROM mg_articoli WHERE 1=0 ';
foreach ($fields as $name => $value) {
$query .= ' OR '.$value.' LIKE "%'.$term.'%"';
}
con
$query = 'SELECT *,MATCH(descrizione) AGAINST("'.$term.'") AS ril';
foreach ($fields as $name => $value) {
$query .= ', '.$value." AS '".str_replace("'", "\'", $name)."'";
}
$query .= ' FROM mg_articoli WHERE 1=0 ';
$query .= 'OR MATCH(descrizione) AGAINST("'.$term.'")';
$query . 'ORDER BY ril DESC';
if (strpos($term, " ") == false){
foreach ($fields as $name => $value) {
$query .= ' OR '.$value.' LIKE "%'.$term.'%"';
}
}
N.B. per far si che la ricerca per attinenza funzioni, ho dovuto aggiungere un indice FULLTEXT sul campo descrizione della tabella mg_articoli.
In pratica, tale snippet assegna un punteggio ti attinenza al campo descrizione di ogni articolo, dopo averlo confrontato con la stringa cercata e restituisce, dal punteggio piรน alto, i risultati. Ho creato inoltre la condizione che permette l'override nel caso in cui la stringa cercata non contenga spazi (come nel caso in cui si stesse ricercando un codice invece della descrizione).
Sperando possa esservi di aiuto, vi auguro una buona giornata ed un buon coding. ๐ ๐ ๐