Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [MySQL] Problema con Match()AGAINST()

    Ho un database con dentro una tabella contenente i prodotti, questa contiene i campi (fulltext) chiamati name e description

    Ora provando a fare la ricerca con:
    codice:
    MATCH(name,description)AGAINST('+ciao -addio' IN BOOLEAN MODE)
    Tutto ok
    Pero' se provo a fare la ricerca solo nel campo name
    codice:
    MATCH(name)AGAINST('+ciao -addio' IN BOOLEAN MODE)
    Ecco che iniziano i problemi, la ricerca va in tilt, ci impoiega anche 100 secondi il pc si impalla.....
    Ma perche'?????
    E' da una settimana che ci sbatto la testa, dapprima pensavo che essendo in hosting era letto il server, ma poi ho provato a trasferire tutto in locale ed ecco che il rpoblema si ripresenta...
    P.S. anche con phpmyadmin....

    Che devo fare, e poi perche' la prima funziona e la seconda no, io tolgo solo
    codice:
    ,description
    nel campo
    codice:
    MATCH
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  2. #2
    in MATCH() si presume ci siano nell'esatto ordine tutti i campi elencati nell'indicizzazione. Altrimenti non viene usato l'indice e la ricerca viene enormemente rallentata.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Innanzitutto grazie mille!!
    Cosa intendi per ordine? Penso che sia prima name e poi description, ma se volessi cercare solo in name e non in description? cosa devo fare?
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  4. #4
    Originariamente inviato da sanbiv
    Innanzitutto grazie mille!!
    Cosa intendi per ordine? Penso che sia prima name e poi description, ma se volessi cercare solo in name e non in description? cosa devo fare?
    prova a fare un indice FULLTEXT con il solo name.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Che cosa è la cardinalità di un indice?
    Come mai nella tabella che ho creato i due indici fulltext hanno una cardinalità pari a metà dei record inseriti?
    Cosa vuo dire?

    Gli indici che ho creato, name e description, mi sevrivano per cercare sia all'interno di name che descrition, ma evidentemente mi conviene cercare solo in name, in quanto nella description ci sono meno dati significativi.
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  6. #6
    Ciao, sono sempre io
    Mi chiedevo: quando cerco
    MATCH(name,description)AGAINST('+lettore +dvd' IN BOOLEAN MODE)
    ed ordino per attinenza lo fa, ma non tien conto del fatto che se lettore dvd è contenuto in name (che e il titolo)ha piu' attinenza che se contenuto solo in description, infatti ad esempio:
    codice:
    1|lettore dvd|il cinema a casa tua
    2|notebook|portatile con lettore dvd
    Ecco l'ordine dovrebbe essere questo ma mySQL fa l'opposto (ORDER BY score DESC)
    Come posso fare per dare piu' importanza alle parole trovate in name? devo creare indici separati?
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  7. #7
    Ciao, sono sempre io
    Mi chiedevo: quando cerco
    MATCH(name,description)AGAINST('+lettore +dvd' IN BOOLEAN MODE)
    ed ordino per attinenza lo fa, ma non tien conto del fatto che se lettore dvd è contenuto in name (che e il titolo)ha piu' attinenza che se contenuto solo in description, infatti ad esempio:
    codice:
    1|lettore dvd|il cinema a casa tua
    2|notebook|portatile con lettore dvd
    Ecco l'ordine dovrebbe essere questo ma mySQL fa l'opposto (ORDER BY score DESC)
    Come posso fare per dare piu' importanza alle parole trovate in name? devo creare indici separati?
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.