Re: request a new feature in fuzzystrmatch - Mailing list pgsql-hackers
From | Liming Hu |
---|---|
Subject | Re: request a new feature in fuzzystrmatch |
Date | |
Msg-id | 519738FD.7000301@gmail.com Whole thread Raw |
In response to | Re: request a new feature in fuzzystrmatch (Atri Sharma <atri.jiit@gmail.com>) |
Responses |
Re: request a new feature in fuzzystrmatch
|
List | pgsql-hackers |
On 5/18/2013 1:03 AM, Atri Sharma wrote: > On Sat, May 18, 2013 at 1:30 PM, Liming Hu <dawninghu@gmail.com> wrote: >> On 5/18/2013 12:11 AM, Atri Sharma wrote: >> >> Sent from my iPad >> >> On 18-May-2013, at 12:34, Liming Hu <dawninghu@gmail.com> wrote: >> >> On Fri, May 17, 2013 at 11:44 PM, Atri Sharma <atri.jiit@gmail.com> wrote: >> >> Sent from my iPad >> >> On 18-May-2013, at 12:07, Liming Hu <dawninghu@gmail.com> wrote: >> >> On Fri, May 17, 2013 at 11:13 PM, Atri Sharma <atri.jiit@gmail.com> wrote: >> >> Sent from my iPad >> >> On 18-May-2013, at 11:23, Liming Hu <dawninghu@gmail.com> wrote: >> >> On Fri, May 17, 2013 at 10:21 PM, Atri Sharma <atri.jiit@gmail.com> wrote: >> >> Sent from my iPad >> >> On 18-May-2013, at 10:41, Liming Hu <dawninghu@gmail.com> wrote: >> >> On Fri, May 17, 2013 at 9:39 PM, Atri Sharma <atri.jiit@gmail.com> wrote: >> >> Sent from my iPad >> >> On 18-May-2013, at 10:00, Liming Hu <dawninghu@gmail.com> wrote: >> >> On 5/17/2013 9:10 PM, Atri Sharma wrote: >> >> On Sat, May 18, 2013 at 9:27 AM, Liming Hu <dawninghu@gmail.com> wrote: >> >> On 5/17/2013 12:39 PM, Liming Hu wrote: >> >> On Fri, May 17, 2013 at 12:06 PM, Josh Berkus <josh@agliodbs.com> wrote: >> >> Can we add Levenshtein-Damerau edit distance since it is used in >> spelling checker >> instead of levenshtein edit distance? >> >> Patches welcome! You, too, can be a PostgreSQL contributor. >> >> However, you will need to preserve the ability of users to use the old >> levenshtien algorithm as well, for backwards-compatibility. Shouldn't >> be hard, just add a new function called levenshtiend(). >> >> I am working on it, I will make it this weekend project. >> >> I have done that. and put the code at github: >> https://github.com/liminghu/fuzzystrmatch >> >> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >> sudo cp fuzzystrmatch.so >> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so >> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >> sudo /etc/init.d/postgresql restart >> >> * Restarting PostgreSQL 9.1 database server >> >> [ OK ] >> >> >> select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >> CREATE EXTENSION fuzzystrmatch; >> >> ********** Error ********** >> >> ERROR: could not load library >> "/usr/lib/postgresql/9.1/lib/fuzzystrmatch.so": >> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so: undefined symbol: >> damerau_levenshtein_internal_noncompatible >> >> Any one can help me on this? Thanks. >> >> The system is not able to find the required library, and I dont think >> using cp to place the library is a very good idea.Did you run Make >> Install after you added your work in the Makefile? >> >> I did not run make install. I am running a stable postgresql in my laptop, I >> do not >> want to reinstall everything, just want to try this contribution. I am >> afraid >> reinstall it will destroy my configurations, and databases, just do not want >> to mess up. >> did you see any thing wrong: >> https://github.com/liminghu/fuzzystrmatch/blob/master/fuzzystrmatch--1.0.sql >> https://github.com/liminghu/fuzzystrmatch/blob/master/fuzzystrmatch--unpackaged--1.0.sql >> https://github.com/liminghu/fuzzystrmatch/blob/master/fuzzystrmatch.c >> https://github.com/liminghu/fuzzystrmatch/blob/master/dameraulevenshtein.c >> https://github.com/liminghu/fuzzystrmatch/blob/master/ >> >> >> You need not reinstall your entire database for installing/re installing an >> extension.Running make install from the extension's directory(after placing >> it in /contrib of a postgres database source directory) will install the >> extension in your current database without breaking anything. >> >> You mean: >> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >> make install >> ? >> >> Yes,although,I would run make clean before running make install,just for >> ensuring that all runs well. >> >> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >> sudo make clean >> rm -f fuzzystrmatch.so libfuzzystrmatch.a >> rm -f fuzzystrmatch.o dmetaphone.o >> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >> sudo make install >> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith >> -Wdeclaration-after-statement -Wendif-labels -Wformat-security >> -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fpic -I. -I. >> -I../../src/include -D_GNU_SOURCE -c -o fuzzystrmatch.o >> fuzzystrmatch.c >> In file included from fuzzystrmatch.c:250:0: >> dameraulevenshtein.c: In function ‘damerau_levenshtein_internal’: >> dameraulevenshtein.c:290:57: warning: unused variable ‘trans’ >> [-Wunused-variable] >> dameraulevenshtein.c:328:57: warning: unused variable ‘trans’ >> [-Wunused-variable] >> In file included from fuzzystrmatch.c:253:0: >> dameraulevenshtein.c: In function ‘damerau_levenshtein_less_equal_internal’: >> dameraulevenshtein.c:290:57: warning: unused variable ‘trans’ >> [-Wunused-variable] >> dameraulevenshtein.c:328:57: warning: unused variable ‘trans’ >> [-Wunused-variable] >> dameraulevenshtein.c: In function >> ‘dameraulevenshtein_with_costs_noncompatible’: >> dameraulevenshtein.c:480:9: warning: ISO C90 forbids mixed >> declarations and code [-Wdeclaration-after-statement] >> dameraulevenshtein.c:494:10: warning: ISO C90 forbids mixed >> declarations and code [-Wdeclaration-after-statement] >> fuzzystrmatch.c: In function ‘damerau_levenshtein_with_costs_noncompatible’: >> fuzzystrmatch.c:266:2: warning: implicit declaration of function >> ‘damerau_levenshtein_internal_noncompatible’ >> [-Wimplicit-function-declaration] >> fuzzystrmatch.c: At top level: >> dameraulevenshtein.c:40:12: warning: ‘dameraulevenshtein_internal’ >> declared ‘static’ but never defined [-Wunused-function] >> dameraulevenshtein.c:37:12: warning: >> ‘dameraulevenshtein_less_equal_internal’ declared ‘static’ but never >> defined [-Wunused-function] >> dameraulevenshtein.c:464:12: warning: >> ‘dameraulevenshtein_with_costs_noncompatible’ defined but not used >> [-Wunused-function] >> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith >> -Wdeclaration-after-statement -Wendif-labels -Wformat-security >> -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fpic -I. -I. >> -I../../src/include -D_GNU_SOURCE -c -o dmetaphone.o dmetaphone.c >> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith >> -Wdeclaration-after-statement -Wendif-labels -Wformat-security >> -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fpic -shared >> -o fuzzystrmatch.so fuzzystrmatch.o dmetaphone.o -L../../src/port >> -Wl,--as-needed -Wl,-rpath,'/usr/local/pgsql/lib',--enable-new-dtags >> /bin/mkdir -p '/usr/local/pgsql/lib' >> /bin/mkdir -p '/usr/local/pgsql/share/extension' >> /bin/mkdir -p '/usr/local/pgsql/share/extension' >> /bin/sh ../../config/install-sh -c -m 755 fuzzystrmatch.so >> '/usr/local/pgsql/lib/fuzzystrmatch.so' >> /bin/sh ../../config/install-sh -c -m 644 ./fuzzystrmatch.control >> '/usr/local/pgsql/share/extension/' >> /bin/sh ../../config/install-sh -c -m 644 ./fuzzystrmatch--1.0.sql >> ./fuzzystrmatch--unpackaged--1.0.sql >> '/usr/local/pgsql/share/extension/' >> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >> >> >> After that: >> >> CREATE EXTENSION fuzzystrmatch; >> select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >> >> >> >> >> ERROR: function dameraulevenshteinnocompatible(unknown, unknown, >> integer, integer, integer, integer) does not exist >> LINE 1: select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >> ^ >> HINT: No function matches the given name and argument types. You >> might need to add explicit type casts. >> >> >> ********** Error ********** >> >> ERROR: function dameraulevenshteinnocompatible(unknown, unknown, >> integer, integer, integer, integer) does not exist >> SQL state: 42883 >> Hint: No function matches the given name and argument types. You might >> need to add explicit type casts. >> Character: 8 >> >> >> >> Ok,so now, we are in issues with the code and possibly, the configurations. >> >> First up, I would fix the warnings >> that are being generated while compiling.Those may lead to hard to detect >> errors later on. >> >> It seems that the functions you added are not being created in the >> database.Are you sure that you have modified the .SQL files correctly to >> create you functions as well,and that you are using the correct SQL files >> while installing? >> >> Does this happen only with dameraulevenshteinnocompatible, or with every >> function that you added? Have you tried using one of the original functions >> of fuzzystrmatch,to ensure that the original functionalities are still >> working? >> >> >> it seems the make install command will copy fuzzystrmatch.so to: >> liming@liming-UX31A:/usr/local/pgsql/lib$ ls -la >> total 48 >> drwxr-xr-x 2 root root 4096 May 17 23:14 . >> drwxr-xr-x 4 root root 4096 May 17 22:39 .. >> -rwxr-xr-x 1 root root 40640 May 17 23:14 fuzzystrmatch.so >> >> liming@liming-UX31A:/usr/local/pgsql/share/extension$ ls -la >> total 28 >> drwxr-xr-x 2 root root 4096 May 17 23:14 . >> drwxr-xr-x 3 root root 4096 May 17 22:39 .. >> -rw-r--r-- 1 root root 2250 May 17 22:48 fuzzystrmatch--1.0.sql >> -rw-r--r-- 1 root root 2250 May 17 23:14 fuzzystrmatch--1.1.sql >> -rw-r--r-- 1 root root 175 May 17 23:14 fuzzystrmatch.control >> -rw-r--r-- 1 root root 1945 May 17 22:48 fuzzystrmatch--unpackaged--1.0.sql >> -rw-r--r-- 1 root root 1945 May 17 23:14 fuzzystrmatch--unpackaged--1.1.sql >> >> instead of: >> >> liming@liming-UX31A:/usr/local/pgsql/lib$ ls -la >> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so >> -rw-r--r-- 1 root root 30520 May 17 19:50 >> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so >> >> >> The files will be copied to your pkglibdir path, which you can find by >> running pg_config --pkglibdir >> >> pg_config >> You need to install postgresql-server-dev-X.Y for building a >> server-side extension or libpq-dev for building a client-side >> application. >> >> >> (Please keep the list marked in your replies). >> >> How did you install the Postgres instance you are trying to install the >> extension in? Did you use pre built binaries or make it from source? >> >> >> I am running ubuntu, I install postgresql from the ubuntu software center. >> I directly copy those files, now it works. >> >> select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >> >> >> >> 1 >> >> >> thanks a lot. >> >> Liming >> >> >> Regards, >> >> Atri >> >> > Awesome. > > For reference, if you are using pre built binaries(as you are using), > you should install the client side applications and > postgresql-server-dev-X.Y as well. > > Regards, > > Atri > -- > Regards, > > Atri > l'apprenant How to do that? Thanks.
pgsql-hackers by date: