#1
| ||||
| ||||
"Related Topics" - nach welchem Konzept?Hallo zusammen, ich habe bald wieder ein wenig Zeit, mich um unser Forum zu kümmern und es würde mich reizen, eine Funktion zu integrieren, die verwandte Themen anzeigt. Für VB-User offenbar eine Selbstverständlichkeit, für phpBBler noch nicht so ganz - es sei denn, ich hätte etwas derartiges übersehen. Ich möchte an dieser Stelle gar nicht mal nach fertigem Code fragen, sondern nach den verschiedenen Methoden, wie man den Grad der Gleichheit verschiedener Threads idealerweise messen könnte und nach welchen Kriterien man vergleichen sollte. PHP-Funktionen wie "similar_text" oder mySQL-Abfragen gemäß "SELECT ... MATCH ... AGAINST" sind mir bekannt, jedoch bin ich mir über die Art der sinnvollen Anwendung nicht ganz sicher. Im ersten Schritt geht es mir lediglich darum, einen Algorithmus zu finden, um am Ende eine sinnvolle Ergebnismenge zu erhalten - um die Performance würde ich mich später kümmern. Hat jemand von Euch schon mal sowas entwickelt oder kennt ein paar gute Links, die mir bei meinem Anliegen weiterhelfen könnten? Grüße aus einem sich in der Schnee-Schmelze befindlichen HH, Gérome Geändert von Gérome (26.01.2004 um 16:10 Uhr). |
#2
| ||||
| ||||
Sehr gut, dass du dieses Thema ansprichst. Wenn du nichts dagegen hast würde ich mich gerne deinem Wissensdurst anschließen und die Fragen wiederholen, in der Hoffnung geholfen zu werden |
#3
| ||||
| ||||
Hallo Gérome, bevor du dich mit der technischen Implementierung auseinandersetzt würde ich überlegen, ob du bei einem solchen System einen Mehrwert für den Benutzer schaffst. Der ein oder andere Link den die Datenbank dabei produziert mag helfen, die meisten werden nichts nützen (so meine Erfahrung mit allem "related"-Zeugs). Wenn du Pech hast bringt es dir nur einige Datenbankabfragen und Vorlagen mehr, sonst nichts. Aber technisch sollte es leicht sein, wenn auch arschlahm. Titelvergleich wäre eine Möglichkeit, wer sich an die Themeninhalte wagen will, wird sich schnell den Server abschießen. Keywords könnte man sich irgendwie zusammenbasteln lassen - das veringert die Serverlast, setzt aber einen echt intelligenten Algorythmus voraus. Wüsste nicht, wie der aussehen soll... __________________ Philipp Gérard Gewöhnliche Menschen denken nur daran, wie sie ihre Zeit verbringen. Ein intelligenter Mensch versucht sie zu nützen. - Arthur Schopenhauer |
#4
| |||
| |||
Hmm... ich weiß... es wurde nicht nach einer fertigen Lösung gefragt, aber meine Variante sieht in etwa so aus: PHP-Code: Allerdings ist die wirklich klein... und ich fürchte, dass dieses System bei mehr als 200 Postings unbrauchbar ist... " Ergo würde mich das auch sehr interessieren. Weil mir hat es (vorallem hier im Board) schon sehr geholfen. Habe dadurch schon sehr viele interessante Themen finden können, die ich anders wohl kaum gefunden hätte. __________________ Patrick Gotthardt Patrick Gotthardt on Software |
#5
| ||||
| ||||
ich denke nicht dass es bei mehr als 200 postings unbrauchbar wird es werden ja immern nur 5 zeilen geholt.. problem ist nur, dass er themen sucht, bei welchen der titel ähnlich ist.. man müsste die so raussuchen, wo zb die meisten ergebnisse enthalten sind mfg __________________ Björn C. Klein Welt-Held! PunkRockNews.de |
#6
| |||
| |||
Interessant ist die Geschichte wirklich. Leider hab ich mich selbst noch nicht an sowas gemacht, da ich weniger an Foren rumprogrammiere. Mir ist aber so als hätte ich diese Funktion auch schon als MOD irgendwo für das phpBB gesehen, habs jetz aber auf die Schnelle beim Suchen nicht gefunden. __________________ Karl Förster Webentwickler mobile2day.de mobile2day.de - Home of PDAs and Smartphones |
#7
| ||||
| ||||
Auf phpBB.com gibt es eine Diskussion zu diesem Thema: >Klick<, deren Ergebnis mich jedoch noch nicht überzeugt. Die Ergebnismenge hatte in meinem Testfällen nichts das Geringste mit den Ausgangs-Thread zutun. Für dieses Ergebnis sind 112 Sekunden Laufzeit auf dem heimischen PC einfach zuviel. ;-) |
#8
| ||||
| ||||
Ich habe so eine Funktion schonmal anfänglich in mein Forum implementiert. Dabei habe ich es so gelöst das aus Thementitel und Beschreibung ein Suchstring erzeugt wird und dieser via MySQL Abfrage (SELECT ... WHERE MATCH(...) AGAINST(...)) die Themen aus der Datenbank holt in denen es Übereinstimmungen in Titel/Beschreibung gibt. Wenn man in seiner Datenbank einen Volltext-Index über die Spalten Thementitel und Beschreibung legt geht das auch noch bei grossen Datenmengen ziemlich fix. Ich hab das an einer Datenbank mit mehreren Tausend Themen getestet und die Abfragen lagen i.d.R. zwischen 0.05 und 0.1 Sekunden (MySQL 4 auf AMD K6 II 450 Mhz). Diese Methode krankt allerdings daran das übereinstimmende Wörter nicht in allen Fällen auch auf ein ähnliches Thema hinweisen (wobei das Relevance Ranking bei MySQL Volltext Indexen die Fehlerquote da reduziert) und an der Tatsache das nicht unbedingt jeder Autor eines Themas auch sehr treffende Wörter im Thementitel verwendet. Eine Variante die ich mir überlegt habe, und die vermutlich etwas genauer wäre, würde folgendermassen funktionieren: Wenn in einem Thema ein neuer Beitrag erstellt wird werden die semantisch relevantesten Wörter (den semantischen Wert könnte man beispielsweise so feststellen das man die Häufigkeit eines Wortes anhand einer Wortliste bestimmt) in eine Wortliste hinzugefügt werden die im Thema gespeichert wird. Dazu müsste man nur in der Thementabelle eine Spalte hinzufügen. Um die relevanten Wörter festzustellen, in der Thementabelle zu verewigen und die Wortliste zu pflegen würde es 3, maximal 4, weitere Datenabfragen beim Speichern eines Beitrags brauchen. Wird ein Thema dann aufgerufen wird mit den Wörtern, die für dieses Thema gespeichert wurden, eine Volltext Suche über die Wortlisten aller anderen Themen gemacht. Das ganze wäre von der Suchfunktion her genauso schnell wie die erste von mir genannte Variante, würde aber ein paar Abfragen beim Speichern eines Beitrages benötigen. Dafür ist diese Methode vermutlich etwas genauer in der Auswahl ähnlicher Themen da nicht nur nach Thementitel sondern auch nach Beitragsinhalten selektiert wird. Ob sich allerdings soviel Aufwand für eine "Ähnliche Themen" Funktion lohnt ist dann die Frage. Dazu müsste man erstmal klären inwiefern so eine Funktion überhaupt Sinn macht bzw. einen Nutzen bringt. Edit: ein Artikel wie man eine Wortliste mit Häufigkeitswerten pflegt wäre dieser hier: http://zez.org/article/view/83/ |
#9
| ||||
| ||||
Ich sehe, daß schon die vorbereitende Diskussion so umfangreich wird, wie ich es befürchtete. Ich habe das Thema zwar angestoßen, werde es aber erst ab Ende kommender Woche ernsthaft weiterverfolgen können, da ich vorher noch Klausuren zu schreiben habe. Ich mache mir gerade Gedanken, wie ich als Mensch zwei Threads als "ähnlich" einstufen würde. Dabei kommt in etwa das heraus, was 'exe' in seinem Beitrag vorgeschlagen hat... Ich spiele zur Ablenkung mal weiter damit in Gedanken rum. ;-) Grüße, Gérome |
Stichworte |
- |
Themen-Optionen | |
Thema bewerten | |