[PHP] Ähnliche Einträge finden (tags)

Tom G

Angesehenes Mitglied
Hallo,

ich habe eine MySQL-Datenbank mit folgender Struktur:

ID | Titel | Inhalt | Tags


In der Spalte Tags sind Schlagwörter durch Leerzeichen getrennt. Z.B. "Sommer Urlaub Ferien Hotel"


Nun möchte ich, bei der Ausgabe eines Eintrages ähnliche Einträge verlinken (related Posts). Hierfür sollen die Tags abgeglichen werden und die 5 Einträge mit den meisten Übereinstimmungen in der Spalte "Tags" ausgegeben werden.
Wie realisier ich das am besten?

Danke!
 
Hallo Tom G,

das ist bei deiner aktuellen Datenstruktur gar nicht so einfach.
Ich würde dir perspektivisch die Auslagerung der Tags in eine gesonderte Tabelle empfehlen und denen jeweils eine ID zuweisen.
Das macht zum Einen deine Abfrage performanter und zum anderen musst du keine Strings zerlegen, da der Abgleich nur auf Integer-Werten durchgeführt wird.

Danach kannst du dann mit einer Join-Abfrage deine Daten wie gewünscht ermitteln, eine etwas ausführlichere Diskussion zu dem Thema findest du auch hier:
https://www.spin.de/forum/115/-/7c44

Das sollte sicher auch auf deinen Anwendungsfall anwendbar sein.




 
Hallo Patrick,

vielen Dank für die Rückmeldung.

Bei mir ist die Performance nicht wirklich von Bedeutung, da die Abfrage eh max. 10 mal pro Tag stattfinden würde.

Überlegenswert wäre, eine neue Spalte "related IDs" einzufügen, in der thematisch passende Einträge (IDs) gespeichert werden. Dafür bräuchte ich ein Script oder ein Ansatz, das ich dann via Cronjob 1x pro Woche laufen lassen könnte.

Eine komplette Umstrukturierung der DB kommt für mich derzeit nicht in Frage.
 
Zurück
Oben