2009-07-29 7 views
7

Ich habe eine Website, die Filme auflistet. Natürlich machen Leute Rechtschreibfehler, wenn sie nach Filmen suchen, und natürlich gibt es die Tatsache, dass einige Filme Apostrophe haben, Buchstaben zum Buchstabieren von Zahlen im Titel usw. verwenden.Was ist der beste Weg, Tippfehlerkorrektur in eine Suche in PHP/MySQL zu implementieren?

Wie bekomme ich mein Suchskript, um diese Fehler zu übersehen ? Wahrscheinlich brauchen Sie etwas, das ein wenig intelligenter ist als WHERE mov_title LIKE '%keyword%'.

Es wurde vorgeschlagen, dass ich eine Volltextsuchmaschine verwende, aber all diese Dinge sehen sehr kompliziert aus, und ich denke, dass sie in meiner Anwendung wie die Hölle auf Erden sein werden. Wenn ich eines verwenden muss, was ist das am wenigsten invasive, wird es am schmerzlosesten sein, es in bestehenden Code zu implementieren?

Antwort

6

Ich denke, Sie müssen eine externe Volltext-Suchmaschine implementieren. MySQL ist einfach nicht gut in der Volltextsuche. Ich würde sagen, Sie sollten Lucene ein Go geben (tutorials). Zend Framework has an API, das in Lucene eingesteckt wird, wodurch es einfacher zu lernen und zu nutzen ist.

+0

Hat Lucene Typo-Erkennung eingebaut? Was ist mit sphinxsearch? –

+1

Ja, Lucene unterstützt Fuzzy-Suchanfragen. Der Algorithmus basiert auf der Levenshtein-Distanz. Die Java-API sieht folgendermaßen aus: http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/search/FuzzyQuery.html – PatrikAkerstrand

+0

Gibt es keinen anderen Weg als die Verwendung von Lucene? –

0

Ich habe weder php noch mysql verwendet, aber eine Alternative zur Volltextsuche könnte soundex searches sein.

+0

mysql unterstützt standardmäßig Sundex – Sethunath

1

Vorausgesetzt, dass Sie MySQL verwenden - MySQL hat keine eingebauten Funktionen, die dazu in der Lage sind.

Dies bedeutet, dass Sie eine Volltextsuche selbst implementieren müssen, oder verwenden Sie eine Volltextsuche von Drittanbietern.

  • Wenn Sie es selbst implementieren, Sie in die metaphone oder double metaphone Algorithmen aussehen sollte (ich würde sie über soundex empfehlen, die bei dieser Art von Aufgabe nicht annähernd so gut ist), phoenetic Darstellungen aller speichern Sie Ihre Wörter. Die Erstellung einer eigenen Volltextsuche ist jedoch keine Aufgabe für Zartbesaitete. Versuchen Sie es nicht, wenn Sie sich selbst nicht als Datenbank-Assistenten betrachten.
  • Wenn Sie ein Drittanbieter-Tool möchten, ist Lucene der Weg zu gehen. Es ist portiert in Tonnen von verschiedenen Sprachen/Plattformen including PHP - Sie müssen nicht Java verwenden.
Verwandte Themen