Moin!
Hi,
da hast du vollkommen recht. Da ist eine AND-Verknüpfung durchaus vernünftiger.
Könnte man das auch beim Gewichten der Suchergebnisse einsetzte?
D.h., wo alle vorkommen kommt als erste sonst als zweites usw.Aber das würde dann kompliziert, oder?
Richtig, das ließe sich mit einer einzigen SQL-Abfrage wahrscheinlich nicht so einfach realisieren. Wenn dein Abfrageergebnis nach Relevanz sortiert werden soll, wäre dazu ja eine Spalte "relevanz" notwendig, auf die du ORDER BY relevanz anwenden kannst. Damit die Relevanz aber irgendwie notiert wird, müßtest du im einzelnen feststellen, wieviele der Suchwörter tatsächlich gefunden wurden. Das zu formulieren wird vermutlich sehr aufwendig.
Es dürfte wahrscheinlich einfacher sein, diese Feststellung hinterher in der Programmiersprache zu treffen. D.H. wenn du alle Einträge haben willst, in denen auch nur ein einziger der Suchbegriffe vorkommt, mußt du statt "AND" natürlich mit "OR" verknüpfen, das Ergebnis dann in ein Array einlesen und nochmal nachsortieren.
Alternativ könntest du deine Datenbank natürlich auch um einen vernünftigen Suchindex erweitern. Die "neue" SELFHTML-Suche beispielsweise gibt die Suchergebnisse nach Relevanz sortiert aus, wobei hier ein Wertungsschema zum Einsatz kommt: Suchworte in der Postingüberschrift sind beispielsweise wichtiger, als wenn sie nur im normalen Text vorkommen. Aber so ein System aufzuziehen ist nicht sehr einfach - und außerdem sorgt es für eine fette Menge an zusätzlichen Daten für diesen Index, die zudem noch relativ aufwendig generiert werden müssen. Das Indizieren des gesamten Forumsarchivs seit 1998 hat jedenfalls (wenn ich es richtig erinnere) eine Woche gebraucht.
Ich würde deshalb von solchen Operationen lieber absehen. Solange man irgendwas findet, sollte das erstmal ausreichen. :)
- Sven Rautenberg