Suchfunktion Forum

campari

Erfahrenes Mitglied
Rauch grad ab bei einer Suchfunktion für ein Forum. Folgende Hirarchie:

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:
Hab nun mehrere einzelne Abfragen gemacht, und über PHP in ein Array zusammengeführt.
Unelegant, aber läuft.


Gibt Problem mit dem kaufmännische Und (ampersand) bei MATCH AGAiNST:

MATCH(fp.content) AGAINST ('W&F')

auch escaped, werden keine Ergebnisse gelistet.

Woran liegt das, und gibts workaround?
 
Zurück