Levenshtein als UDF in MySql

apt-get install libmysqlclient-dev
bekommt. Danach wird mysqllevenshtein.cc ausgepackt und als shared object gebaut:
g++ -I /usr/include/mysql/ -o libmysqllevenshtein.so -shared mysqllevenshtein.cc
Das shared object wird nach /usr/lib/mysql kopiert
cp libmysqllevenshtein.so /usr/lib/mysql/
ein Link erzeugt und der Cache erneuert:
cd /usr/lib
ln -s mysql/libmysqllevenshtein.so .
ldconfig
Danach sollte man in MySql die neue Funktion anmelden können:
CREATE FUNCTION levenshtein RETURNS INT SONAME 'libmysqllevenshtein.so';
Noch prüfen, ob sie auch funktioniert:
mysql> select levenshtein('Fall', 'Knall');
+------------------------------+
| levenshtein('Fall', 'Knall') |
+------------------------------+
| 2 |
+------------------------------+
1 row in set (0.00 sec)
Prima. Jetzt fehlt eigentlich nur noch die Möglichkeit, den Editierabstand auch noch zu gewichten. Dazu muß man aber die Funktion umschreiben und ich habe doch keine Zeit... Sollte sich da jemand mal erfolgreich dran versucht haben, darf der oder die sich gerne bei mir melden.
Nachtrag: Natürlich geht es auch anders. Soeben das hier gefunden, was ich natürlich niemandem vorenthalten will.
Labels: Linguistik, MySql, notiert, Rechnerbastelei
1 Comments:
Vielen Dank!
Hat auf einen OpenSuse11 gut funktioniert.
Und schafft pro Sekunde das wofür die reine sql-Version 6 Minuten gebraucht hat.
Kommentar veröffentlichen
<< Home