Mailinglisten-Archive |
Hallo Andre Andre Wagner schrieb: > Als erstes fiel mir dazu metaphone und/oder similiar_text > auf. Wobei similiar_text schon eine Möglichkeit bietet die > Ähnlichkeit zweier Strings in Prozent zurückzugeben. Bei > knapp 3000 gespeicherten Texten würde das bedeuteten, dass zu > jeder Prüfung 3000 SQL-Abfragen nötig sind. Das wird mir die > mySQL-Datenbank nicht danken. Oder gibt es da eine andere Möglichkeit? metaphone() und soundex() sind für diesen Zweck IMHO weniger geeignet, da sie einen Schlüssel von fester Länge liefern. similar_text() ist sehr teuer bei langen Strings (n**3). levensthein() ist deutlich schneller. Ich benutze beide Algorithmen kombiniert, um Benutzereingaben bei einem Quiz[1] zu verifizieren. Dabei wird eine Liste von rund 10000 Namen durchsucht (je max. 40 Zeichen). Die Daten hole ich zu Beginn des Quiz aus der Datenbank in ein Array. Bei längeren Texten ist es wahrscheinlich besser, wenn du Fulltext-Indizes in der Datenbank anlegst und die entsprechenden Funktionen von MySQL benutzt[2]. Falls notwendig wendest du levensthein() zusätzlich auf die Datensätze an, bei denen match() einen hohen Relevanzwert liefert. Gruß, Hans [1] <"www.bfq.ch/biofotoquiz/quiz/quizSelect.php?quizCode=1"> [2] <"http://dev.mysql.com/doc/refman/5.1/de/fulltext-search.html">
php::bar PHP Wiki - Listenarchive