• Super User

    Mysql query: ricerca match di lettere dentro parole

    Salve!
    Attraverso una query, un form di ricerca va a trovare le corrispondenze dentro alcuni campi del database.

    L'utente inserisce ad esempio "FIRENZE" e come risultato il sito mi risponde con una serie di ITEM che hanno al suo interno la seguente parola.

    La Query è la seguente:

    SELECT *
    FROM nome_tabella AS p
    WHERE MATCH (p.name, p.address, p.website) AGAINST ('Firenze')
    ORDER BY p.id DESC;
    

    Allora anticipo che i 3 campi all'interno del "match" sono già stati impostati come INDICI su Full-TEXT.

    Capita però che se l'utente ricerca ad esempio degli articoli "il , la , lo , in" o un insieme di lettere presenti in una parola, questa non dia nessun risultato.

    Ad esempio il mio cliente ha inserito "EMILIA-ROMAGNA" (con il simbolo "-").
    Se viene ricercato "EMILIA" allora mi da un risultato positivo, se invece cerca ROMAGNA questo risponde con 0 risultati.

    A sua volta voglio questa ricerca elastica.
    Se il cliente cerca ad esempio "FIRE" invece di FIRENZE, questa mi deve dare come risultato tutto ciò che contiene questa combinazione di lettere, quindi gli stessi item FIRENZE.

    Grazie anticipitamente