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