Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405

    [MySQL] Stringhe che si "assomigliano"

    CHE TITOLO!!!
    dunque mi spiego, sto facendo un piccolo motore di ricerca interno del mio sito...
    ho una tabella cosi realizzata:

    codice:
    TABELLA
    - id
    - chiave
    per esempio i dati che ci possono essere sono:

    codice:
    1   cielo
    2   mare
    3   terra
    ora vorrei fare in modo che se l'utente non trova la corrispondenza per un SUO errore di battitura, ad esempio se scrive "cieelo" anzichè "cielo" vorrei fare in modo che come fa ad esempio google, di scrivere Stavi forse cercando ... e poi metto subito dopo la parola più attinente con quelle reali(presenti nella tabella mysql)... non mi ricordo il nome della funzione mysql che fa questo...mi rinfrescate la memoria?

    grazie a tutti


  2. #2
    Ho la stessa domanda!
    "La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano."

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Ci sono queste funzioni:

    Somiglianza metrica

    Levenshtein
    http://www.php.net/levenshtein

    Somiglianza fonetica

    Soundex
    http://www.php.net/manual/it/function.soundex.php

    Metaphone
    http://www.php.net/manual/it/function.metaphone.php

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    Originariamente inviato da Sgurbat
    Ci sono queste funzioni:

    Somiglianza metrica

    Levenshtein
    http://www.php.net/levenshtein

    Somiglianza fonetica

    Soundex
    http://www.php.net/manual/it/function.soundex.php

    Metaphone
    http://www.php.net/manual/it/function.metaphone.php

    si si queste le avevo notate...però non c'è una funzione proprio di mysql?
    gestire tutto da php è un macello, cioè dovrei scorrere tutti i record generati dalla query, calcolare tutte le accoppiate con Levenshtein e poi vedere quello che più si avvicina.....

    la vedo pesante come procedura. non c'è un modo più veloce?
    anche su php.net come fanno?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    up

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La funzione soundex() è presente anche in mysql.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    Originariamente inviato da nicola75ss
    La funzione soundex() è presente anche in mysql.
    si ma restituisce il soundex come si fa a controllare se si assomigliano,....poi la cosa vale per parole inglesi

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Che significa per le parole inglesi? La funzione è valida per qualunque stringa.

    esempio

    select * from tabella
    where soundex(tuo_campo) = soundex('stringa_cercata')

  9. #9
    io non conosco il metodo usato da google e neppure uno simile in mysql, l'unica cosa che mi viene in mente e che ti puoi sviluppare un sistema personalizzato

    ho provato su google e se metti "ottiglia" non ti propone bottiglia mentre se metti bttiglia si

    quindi un sistema simile sarebbe quello di inserire in una tabella le parole comuni (magari ricavate dal tuo database con procedure notturne)

    poi su queste tabelle ti puoi arrangiare con delle regexp in mysql oppure con altri sistemi che puoi implementare

    ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    405
    Originariamente inviato da nicola75ss
    Che significa per le parole inglesi? La funzione è valida per qualunque stringa.

    esempio

    select * from tabella
    where soundex(tuo_campo) = soundex('stringa_cercata')
    ma php.net fa in questo modo?
    anche lo stesso google...su per giu lavora cosi?

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.