• User

    Problema operatore jolly (*) in ricerca FullText con Mysql e PHP

    Ciao a tutti ragazzi, ho un problema con una ricerca FullText fatta con PHP e MySQL, in pratica la ricerca ha un solo campo per ricerca il codice di un prodotto con la seguente stringa:

    SELECT *, MATCH(codice) AGAINST('$codice') as score
    FROM prodotti
    WHERE MATCH(codice) AGAINST('$codice')
    ORDER BY score DESC
    

    Ma ho dei problemi con l'operatore jolly *, vi faccio un esempio pratico:

    Ipotizziamo che il codice del prodotto giusto sia ABCDE-5:

    • Se io inserisco ABCDE-5, ABCDE-, ABCDE mi trova dei risultati mentre se inserisco ABCD non mi trova niente;
    • Se inserisco ABCDE-5*, ABCDE-5, ABCDE-, ABCDE* mi fornisce dei risultati, mentre con ABCD* o cose del genere non mi fornisce niente;
    • Se inserisco ABCDE5 mi da dei risultati, mentre con ABCD-5 oppure ABCD*5 non mi restituisce niente;

    Volevo fare una ricerca su 3 livelli in modo che se non trova il codice esatto costruisco un array in cui ogni elemento è la stringa inserita in cui ogni carattere si sostituisce alternativamente con un *, quindi se inserisco ABCDE-5 e non trova niente avrò il seguente array:

    ABCDE-5, BCDE-5, ACDE-5, ABDE-5, ABCE-5, ABCD-5, ABCDE5, ABCDE-, ABCDE-5*, ABCDE-5*

    Poi effettuerò la ricerca per ogni elemento e quando trovo dei risultati fermo il ciclo, però non dandomi dei risultati provandolo a mano non posso usare questo metodo, dove sbaglio?

    Grazie mille 🙂


  • User

    Mi sa che stai confondendo * con %.

    • è un selettore universale, ti seleziona l'intera riga che soddisfa la tua ricerca.
      Se la ricerca la effettui su una stringa e vuoi no ncontrollo non di = ma di "contiene", devi mettere % prima e dopo la stringa che vuoi trovare

  • User

    Perdonami, non ho mai usato la ricerca FullText però mi sono documentato.
    Io intendo l'asterisco messo nella stringa fornita dalla variabile $codice non l'asterisco della selezione che ti seleziona tutta la riga.
    Da quanto ho visto io non dovrebbe essere l'asterisco che nella ricerca FullText è uno degli operatori è significa "qualsiasi carattere"?

    Grazie


  • User

    Nessuna sa dove potrei aver sbagliato?