Abfrage für eine AND-Suche

fanste

Erfahrenes Mitglied
Hi,

ich komme mal wieder bei einer Kleinigkeit nicht weiter. Vielleicht habt ihr eine gute Lösung. Ich wusste jetzt nicht genau, wo in welches Forum ich schreiben sollte, da es aber mehr um SQL als um PHP geht, dachte ich mir, dass es hier wohl besser passt.

Es geht um eine Suche für ein Forum, die ich programmieren muss. Ich habe 2 Tabellen:
1. wordlist:
Hier stehen die Wörter, die bei der Suche verwendet werden (Länge > 2 zeichen, Wörter wie 'und', etc fliegen raus)
2. word_match:
post_id + word_id, d.h. welches Wort in welchem Beitrag vorkommt. Hier wird auch angegeben, ob das Wort im Titel vorkommt (title_match: 1 = titel, 0 = text, 2 = beides)

Das Problem, dass ich habe, ist nun die AND Suche, sprich alle angegebenen Wörter müssen vorkommen. Kann man das irgendwie nur in SQL lösen, dass man die post_id bekommt, in der alle Wörter vorkommen, oder muss ich das nochmal extra in PHP durchgehen? (Ergebnisse pro ID zählen und mit der Anzahl der Wörter vergleichen)

Danke schonmal.
 
Hmm, ich glaube das ist problematisch, da ein entsprechendes SQL - Statement nur die rohen Hits in der 2. Tabelle liefern würde. Die müssten dann noch einmal in PHP ausgewertet werden.

Vielleicht kannst du ja direkt ein LIKE verwenden :


Die Wörter die nicht ausgewertet werden sollen streichst du beim Zusammenbauen des sql.

PHP:
select id from beitrag where (content like "%suchwort1%" and content like "%suchwort2%") or 
(title like "%suchwort1%" and title like "%suchwort2%")

gruß

kato
 
Habe mir soeben nochmal meinen Beitrag durchgelesen und dabei ist mir aufgefallen, dass ich mir die Lösung eigentlich schon selbst gegeben habe. (letzte Klammer)

Ganz normal mit IN (wort1, wort2, ..., wortN) suchen, nach post_id gruppieren und die gelieferten Eintrage pro post_id zählen. Diese Anzahl dann mit HAVING vergleichen.

Hätte mir das Warten sparen können, wenn ich meinen Text vor dem abschicken nochmal durchgelesen hätte^^

Was meint ihr: Kann man das so lassen, oder wird das bei einem größeren Forum zu rechenintensiv?

@kato:
So in etwa hatte ich mir das dann auch gedacht, wenn es keine reine SQL Lösung gegeben hätte/gibt.
 

Neue Beiträge

Zurück