Mysql
 sql >> Database >  >> RDS >> Mysql

alternativa al levenshtein

Se sei legato solo a MySQL non c'è una soluzione facile.

Di solito questo viene risolto utilizzando l'indicizzazione ngram specializzata per un filtro di ricerca rapida dei candidati e quindi il calcolo di levensthein solo su 10-50 candidati, il che è più veloce del calcolo di levensthein per tutte le coppie.

Motori di ricerca full-text specializzati come Solr/Luce hanno questo integrato.

PostgreSQL ha un modulo contrib pg_trgm (http://www.postgresql.org/docs/9.0/static/pgtrgm.html) che funziona come un incantesimo.

Puoi anche simularlo in MySQL usando l'indicizzazione fulltext, ma devi raccogliere parole da tutti i tuoi documenti, convertirle in ngram, creare indici fulltext su di esse e hackerarle tutte insieme per una ricerca veloce. Il che porta ogni sorta di problemi con la ridondanza, la sincronizzazione... non vale il tuo tempo.