Mailinglisten-Archive |
Mahlzeit, > >gruebele schon einige Zeit darueber, wie bzw. ob man ein Textfeld > >indizieren kann/sollte um die Abfrage zu beschleunigen. Hier klinke ich mich jetzt mal ein: Versuche mal folgendes: Beim Import des Datensatzes zerlege den beliebig (!) großen Text in alle seine Worte und lege die einzeln in eine Tabelle ab: table desc { id INT UNSIGNED NOT NULL; beschr VARCHAR(30); PRIMARY KEY(id) KEY(beschr); } In einer weiteren Tabelle steht nun, welches Wort zu welchem Artikel gehört: table desc_1n { artnr INT UNSIGNED NOT NULL; id INT UNSIGNED NOT NULL; PRIMARY KEY(artnr); KEY(id); } Sucht man nun nach einem Wort, dann kannst Du wie folgt vorgehen: SELECT id FROM desc WHERE beschr LIKE ("$beschr%"); Nun bekommt man die ID/s der/des Treffers. Ein Blick in die Tabelle "desc_1n" SELECT artnr FROM desc_1n WHERE id=$id sollte nun den Datensatz finden, der das gesuchte Wort / Teilwort enthält. Es sind demnach mindestens zwei Datenbankabfragen notwendig, was aber trotzdem für schnelle Abfragen reicht. So kann man auch große Texte sehr schnell und nach Teilwörtern durchsuchen. Ein Update auf die neueste MySQL-Version ist nicht unbedingt notwendig (wenn auch empfehlenswert). Bye, Heiko --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive