Rauch grad ab bei einer Suchfunktion für ein Forum. Folgende Hirarchie:
Hauptkategorie
Datenbank ist MySQL und jede Hierarchie in jeweils einer Tabelle angelegt.
Dabei soll in allen 4 Tabellen nach dem Suchwort mit MATCH AGAINST gesucht werden und die Ausgabe jeweils nur bis zu der Hierarchie erfolgen, bis zu der das Suchwort auch matcht. Also Wenn im Titel der Subkategorie das Suchwort vorkommt, in den darunter liegenden 2 Hierarchien aber nicht mehr, sollen die auch nicht im Ergebnis gelistet werden.
Da das Forum mehrsprachig ist, sind Titel von Hauptkategorie und Subcategorie in Label-Tabelle ausgelagert.
Bislang wird erfolgreich in der 4. Hierarchie gesucht, aber wie bekomm ich die restlichen Hierarchien durchsucht?
Ansatz bislang:
Besten Dank.
Hauptkategorie
-> Subkategorie
-> Thread
-> Posts mit Titeln
Datenbank ist MySQL und jede Hierarchie in jeweils einer Tabelle angelegt.
Dabei soll in allen 4 Tabellen nach dem Suchwort mit MATCH AGAINST gesucht werden und die Ausgabe jeweils nur bis zu der Hierarchie erfolgen, bis zu der das Suchwort auch matcht. Also Wenn im Titel der Subkategorie das Suchwort vorkommt, in den darunter liegenden 2 Hierarchien aber nicht mehr, sollen die auch nicht im Ergebnis gelistet werden.
Da das Forum mehrsprachig ist, sind Titel von Hauptkategorie und Subcategorie in Label-Tabelle ausgelagert.
Bislang wird erfolgreich in der 4. Hierarchie gesucht, aber wie bekomm ich die restlichen Hierarchien durchsucht?
Ansatz bislang:
SQL:
SELECT * FROM (
SELECT *,
MATCH(fp.content,fp.title) AGAINST ("suchwort*") as relevance
FROM forum_maincategory AS fm
INNER JOIN forum_subcategory AS fs ON
fs.idTopic = fm.idTopic
INNER JOIN forum_thread AS ft ON
ft.idSubcategory = fs.idSubcategory
INNER JOIN forum_post AS fp ON
fp.idThread = ft.idThread
LEFT JOIN label lt ON
lt.idLabel = fm.idLabel
LEFT JOIN label AS ls ON
ls.idLabel = fs.idLabel
WHERE lt.sLang = "DE"
AND ls.sLang = "DE"
AND MATCH(fp.content,fp.title) AGAINST ("suchwort*" IN BOOLEAN MODE)
ORDER BY relevance DESC
) AS tmpTable
GROUP BY tmpTable.idThread
ORDER BY tmpTable.relevance DESC
LIMIT 0, 10
Besten Dank.
Zuletzt bearbeitet von einem Moderator: