Hallo,
zugegeben, der Beitragstitel ist etwas unglücklich formuliert, kann ich nicht besser beschreiben ..
Und zwar habe ich folgende SQL-Abfrage:
[highlight=sql]SELECT t.tag,e.id,e.title,
(MATCH(e.title) AGAINST ('+Suchbegriff')) as score_event,
(MATCH(t.tag) AGAINST ('+Suchbegriff')) as score_tags,
(MATCH(c.name) AGAINST ('+Suchbegriff')) as score_county FROM events e
JOIN tags_rels tr ON (tr.entry_id = e.id AND tr.type = 'e')
JOIN tags t ON t.id = tr.tag_id
JOIN counties c ON c.id = a.county_id
WHERE ((MATCH(e.title) AGAINST ('+Suchbegriff' IN BOOLEAN MODE))
OR (MATCH(t.tag) AGAINST ('+Suchbegriff' IN BOOLEAN MODE))
OR (MATCH(c.name) AGAINST ('+Suchbegriff' IN BOOLEAN MODE)) )
GROUP BY e.id
ORDER BY (score_event+score_tags+score_county) DESC;[/highlight]
Es werden quasi der Titel einer Veranstaltung nach dem Suchwort durchsucht (events.title), außerdem der Name der Stadt (counties.name) und außerdem sollen alle Tags, mit denen die Veranstaltung verknüpft ist (über die Verknüpfungstabelle tags_rels) durchsucht werden. Das können beliebig viele sein.
Und damit zu meinem eigentlichen Problem: Durch das "GROUP BY e.id" scheint immer nur der erste Tag, mit dem die Veranstaltung verknüpft ist durchsucht zu werden, nicht aber die restlichen. Nehme ich das GROUP BY e.id weg, werden alle durchsucht, aber ich bekomme eben auch im Zweifel so oft die selbe Veranstaltung als Ergebnis, wie tags vorhanden sind ..
Gibt es da eine Lösung? Ich hoffe, ich konnte es verständlich erklären ..
Vielen Dank schonmal!
Johannes
zugegeben, der Beitragstitel ist etwas unglücklich formuliert, kann ich nicht besser beschreiben ..
Und zwar habe ich folgende SQL-Abfrage:
[highlight=sql]SELECT t.tag,e.id,e.title,
(MATCH(e.title) AGAINST ('+Suchbegriff')) as score_event,
(MATCH(t.tag) AGAINST ('+Suchbegriff')) as score_tags,
(MATCH(c.name) AGAINST ('+Suchbegriff')) as score_county FROM events e
JOIN tags_rels tr ON (tr.entry_id = e.id AND tr.type = 'e')
JOIN tags t ON t.id = tr.tag_id
JOIN counties c ON c.id = a.county_id
WHERE ((MATCH(e.title) AGAINST ('+Suchbegriff' IN BOOLEAN MODE))
OR (MATCH(t.tag) AGAINST ('+Suchbegriff' IN BOOLEAN MODE))
OR (MATCH(c.name) AGAINST ('+Suchbegriff' IN BOOLEAN MODE)) )
GROUP BY e.id
ORDER BY (score_event+score_tags+score_county) DESC;[/highlight]
Es werden quasi der Titel einer Veranstaltung nach dem Suchwort durchsucht (events.title), außerdem der Name der Stadt (counties.name) und außerdem sollen alle Tags, mit denen die Veranstaltung verknüpft ist (über die Verknüpfungstabelle tags_rels) durchsucht werden. Das können beliebig viele sein.
Und damit zu meinem eigentlichen Problem: Durch das "GROUP BY e.id" scheint immer nur der erste Tag, mit dem die Veranstaltung verknüpft ist durchsucht zu werden, nicht aber die restlichen. Nehme ich das GROUP BY e.id weg, werden alle durchsucht, aber ich bekomme eben auch im Zweifel so oft die selbe Veranstaltung als Ergebnis, wie tags vorhanden sind ..
Gibt es da eine Lösung? Ich hoffe, ich konnte es verständlich erklären ..
Vielen Dank schonmal!
Johannes
Comment