Mailinglisten-Archive |
Hi Yannik, Am Mittwoch, 29. November 2006 15:35 schrieb Yannik Hampe: > Ich gehe mal davon aus, du benutzt MySQL... > > Du könntest auf die Textspalte erstmal einen Fulltext legen. > Dann kannst du mit > SELECT MATCH(spalte) AGAINST (text) AS relevanz FROM ... > Von MySQL einen Wert errechnen lassen, anhand dessen du einschätzen > kannst, ob es diese Nachricht schonmal gab. > Je höher der Wert in relevanz, je wahrscheinlicher ist es eine von > deinen Spams. wenn er mit dem kompletten Text der neuen PM sucht und dieser nicht exakt so irgendwo existiert, wird er auch keine Treffer bekommen, d.h. Du wirst gar nicht erst dahin kommen, die Relevanz auslesen zu können. ;-) Also entweder habe ich Deinen Ansatz nicht verstanden, oder er ist logisch falsch. :-) > Zusätzlich solltest du wahrscheinlich noch im Where anführen, ob die > Nachricht auch vom gleichen Benutzer kam. Denn es gibt bestimmt auch > ähnliche PNs, die immer wieder zwischen irgendwelchen Benutzern > versendet werden. Die generelle Gefahr, auch bei der Benutzereinschränkung ist, daß eigentlich unterschiedliche PMs wegen nur marginaler Unterschiede plötzlich als zu ähnlich erkannt und abgelehnt werden. Konkret: Ein Nutzer schreibt einem anderen eine lange PM. Der Nutzer antwortet mit Vollzitat nur ein Wort: "OK.". Und darauf antwortet dann wieder der andere mit "Gut.". In diesem Fall wir die errechnete Ähnlichkeitsprozentzahl sehr hoch sein und auch noch denselben Benutzer treffen. Trotzdem sind die PMs inhaltlich keine Variation ein und derselben PM. > Performancemässig würde ich sagen, dass dies eine wesentlich > schneller Lösung ist, als die vorgeschlagenen php-Lösungen. > Aber wirklich schnell ist MATCH dann trotzdem noch nicht. Du solltest > diese Prüfungen am besten nur dann machen, wenn das schon die 3. PN > des Benutzers in der Stunde ist oder irgend sowas... Die vorgeschlagenen PHP-Lösungen sind vermutlich erstens langsam und zweitens schwerlich praktikabel, weil erst einmal stapelweise - teilweise sicherlich etwas längere - PMs aus der Datenbank gezogen und dann mit den Funktionen analysiert werden müssen. Sind gerade viele Benutzer gleichzeitig online, kann man damit sicherlich eine hübsche Last auf dem System erzeugen. Bei der Datenmenge, die man bei 35.000 Nutzern in der Datenbank vermuten kann, wird MATCH ... AGAINST ... allerdings mit Sicherheit auch sehr langsam sein. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive