Mailinglisten-Archive |
Andreas Kempf aka 'Amalesh' schrieb am Montag, den 20. September 1999: > es geht darum: in einem tabellenfeld soll nach einem begriff gesucht > werden. Dieses feld ist ein blob und kann einen text mit ca. 10000 > wörtern beinhalten. Nun sollen die records als erstes angezeigt > werden, in denen der begriff am _häufigsten_ vorkommt. > > Läßt sich das irgendwie mit (my)SQL lösen? Ich hätte da eine Idee, aber _effizient_ ist die Sicher nicht ... Deshalb schon hier gleich mein Rat: mach's besser effizient (zum Beispiel in Perl) auf der Anwendungsseite oder per vorbereiteten Suchindizes! Also, meine Idee: Wenn Du mit der Funktion REPLACE() die Suchworte löscht, wird der Ergebnisstring kürzer. Die Längendifferenz geteilt durch die Länge des Suchwortes zeigt einem dann, wie oft das Wort vorkam. SELECT ( LENGTH(textfeld) - LENGTH(REPLACE(textfeld, suchwort, '')) ) / LENGTH(suchwort) AS anzahl FROM tabelle ORDER BY anzahl DESC; Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive