phpbar.de logo

Mailinglisten-Archive

[php] Erkennen von ähnlichen Texten

[php] Erkennen von ähnlichen Texten

Hans Egg hans.egg at swissonline.ch
Mit Jun 6 15:11:19 CEST 2007


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