2009-07-29 10 views
7

Ho un sito che elenca i film. Ovviamente le persone commettono errori di ortografia durante la ricerca di film e, ovviamente, alcuni film hanno apostrofi, usano lettere per comporre numeri nel titolo, ecc.Qual è il modo migliore per implementare la correzione della correzione ortografica in una ricerca in php/mysql?

Come faccio a evitare che lo script di ricerca trascuri questi errori ? Probabilmente ha bisogno di qualcosa che sia un po 'più intelligente di WHERE mov_title LIKE '%keyword%'.

È stato suggerito di utilizzare un motore di ricerca di testo completo, ma tutte queste cose sembrano davvero complicate e sento che la loro costruzione nella mia applicazione sarà come un inferno sulla terra. Se devo usarne uno, qual è il meno invasivo, che sarà più indolore implementare nel codice esistente?

risposta

6

Penso che sarà necessario implementare un motore di ricerca esterno di testo completo. MySQL non è adatto alla ricerca di testo completo. Direi che dovresti dare Lucene un passaggio (tutorials). Zend Framework has an API collegato a Lucene, facilitando l'apprendimento e l'utilizzo.

+0

In Lucene è incorporato il riconoscimento degli errori di battitura? Che dire di sphinxsearch? –

+1

Sì, Lucene supporta le query di ricerca Fuzzy. L'algoritmo è basato sulla distanza di Levenshtein. L'API Java si presenta così: http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/search/FuzzyQuery.html – PatrikAkerstrand

+0

Non c'è altro modo se non usare Lucene? –

0

Non ho utilizzato né php né mysql, ma un'alternativa alla ricerca full-text potrebbe essere soundex searches.

+0

mysql supporta per impostazione predefinita sundex – Sethunath

1

Presumendo che si utilizza MySQL - MySQL non ha funzionalità integrate che siano in grado di farlo.

Ciò significa che è necessario implementare una ricerca full-text da soli o utilizzare uno strumento di ricerca full-text di terze parti.

  • Se si implementa da soli, si dovrebbe esaminare le metaphone o double metaphone algoritmi (io li consiglierei sopra soundex, che non è altrettanto bravo in questo tipo di attività), per memorizzare rappresentazioni phoenetic di tutti i tuoi parole. Tuttavia, la creazione di una ricerca a tutto testo non è un compito per i deboli di cuore. Non tentare se non ti consideri un wizard di database.
  • Se si desidera uno strumento di terze parti, Lucene è la strada da percorrere. È convertito in tonnellate di diverse lingue/piattaforme including PHP - non è necessario utilizzare Java.
Problemi correlati