Mailinglisten-Archive |
Hallo Elmar, >> Ich möchte in einem tabellenfeld nach 2 wörtern suchen und zwar mit OR >> verknüpft. Das ist ja noch einfach, aber jetzt hätte ich gerne das ich das >> Ergebnis so geordnet bekomme das die rows wo beide wörter enthalten sind >> ganz oben stehen, danach die mit einem wort und dann die mit 0 wörtern. Also >> das Prinzip einer Suchmaschine ... kann man das mit einem select-statement >> lösen? Ich hatte ja erst an REGEX gedacht, aber der gibt ja nicht zurück >> wieviele treffer es gab ... > >Such mal auf dem TCX-Web-Server, ich meine mich erinnern zu können, >daß dort ein Textretrievalsystem liegt. > >Grundsätzlich wird das System ohne spezielle Indexstrukturen aber nur >bei sehr kleinen Datenbanken vernünftig arbeiten, da keine >Indexstrukturen verwendet werden, wenn der Text z.B. mittels REGEX >gesucht wird. > >Wenn Du Indices nutzen willst, unternimm folgendes: > >a) Gibt den Dokumenten eine Kennummer > >b) Zerlege alle Dokumente in einzelne Worte (muß in der >Client-Software unternommen werden) > >c) Richte eine Tabelle für die Relation Kennung<->Wort ein. > >d) Über diese Tabelle sollten die von Dir gewünschten Abfragen möglich >sein, wenn die Abfrage zu komplex wird, muß man sowas ggf. in der >Client-Software nachbearbeiten, d.h. Du liest die Kennungen zu Wort a >und dann die zu b und berechnest anschließend die gewünschte >Gesamtliste. > >Die SQL-Abfrage für d) könnte in etwa so aussehen > >SELECT Kennung,Count(*) FROM ( > SELECT Wort,Kennung FROM Wortliste WHERE Wort='a' > > UNION ALL > > SELECT Wort,Kennung FROM Wortliste WHERE Wort='b' >) Ich glaube das ist etwas overkill für meine Anwendung ;). Das gebe ich die ergebnisse lieber ungeordnet aus. Aber vielen Dank ... cu Christoph
php::bar PHP Wiki - Listenarchive