/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
SOUNDEX - fonetisk søgning
Fra : Adam Sjøgren


Dato : 21-10-03 13:42

Hej.


I MySQL findes funktionen SOUNDEX(), som man kan bruge til at lave
fonetiske søgninger
(<http://www.mysql.com/doc/en/String_functions.html#IDX1230>).

Jeg har kigget i Postgresqls manual, men kan ikke finde noget
tilsvarende dér
(<http://www.postgresql.org/docs/7.2/interactive/functions-string.html>).

Er der nogen der véd hvad man plejer at gøre i Postgresql?

Skal man hen og finde ud af at skrive noget et-eller-andet-procedure
som man kan proppe ind i maven på dyret, eller hvad mon løsningen er?


Mvh.

--
Det største problem ved usenet er, at dem man har Adam Sjøgren
i sin kill-file hele tiden skifter From:-linie asjo@koldfront.dk

 
 
Troels Arvin (21-10-2003)
Kommentar
Fra : Troels Arvin


Dato : 21-10-03 14:17

On Tue, 21 Oct 2003 14:41:37 +0200, Adam Sjøgren wrote:

> I MySQL findes funktionen SOUNDEX(), som man kan bruge til at lave
> fonetiske søgninger
> (<http://www.mysql.com/doc/en/String_functions.html#IDX1230>).
>
> Jeg har kigget i Postgresqls manual, men kan ikke finde noget
> tilsvarende dér

Du skal installere "fuzzystrmatch" fra PostgreSQL's "contrib"-område i
den database, hvor du vil have adgang til soundex (og lign. funktioner).
Hos mig gør jeg:

$ cd /usr/share/pgsql/contrib
$ psql -U postgres DATABASENAVN <fuzzystrmatch.sql

Herefter kan jeg, når jeg benytter relevante database, fx. skrive:

CREATE TABLE s (nm text);
insert into s values ('john');
insert into s values ('joan');
insert into s values ('wobbly');
select * from s where soundex(nm)=soundex('john');
nm
------
john
joan
(2 rows)

"Dokumentation":
http://developer.postgresql.org/cvsweb.cgi/pgsql-server/contrib/fuzzystrmatch/README.fuzzystrmatch?rev=1.4&content-type=text/x-cvsweb-markup

Delvist forældet, men lidt mere indgående, om soundex():
http://developer.postgresql.org/cvsweb.cgi/pgsql-server/contrib/soundex/Attic/README.soundex?rev=1.2&content-type=text/x-cvsweb-markup&hideattic=0

Der står, at soundex() er ret specifikt rettet mod det engelske sprog,
så pas på med, hvordan du bruger det. Måske en af de andre funktioner
fra fuzzystrmatch er mere relevant.

Hvis du ofte skal udføre soundex() på værdierne i en kolonne, kan det
nok betale sig at skabe et særligt index, der tager hensyn til dette:
http://developer.postgresql.org/docs/postgres/indexes-expressional.html

--
Greetings from Troels Arvin, Copenhagen, Denmark


Adam Sjøgren (22-10-2003)
Kommentar
Fra : Adam Sjøgren


Dato : 22-10-03 22:46

On Tue, 21 Oct 2003 15:17:20 +0200, Troels wrote:

> Du skal installere "fuzzystrmatch" fra PostgreSQL's "contrib"-område
> i den database, hvor du vil have adgang til soundex (og
> lign. funktioner).

Ahh, tak!

> Delvist forældet, men lidt mere indgående, om soundex():
> http://developer.postgresql.org/cvsweb.cgi/pgsql-server/contrib/soundex/Attic/README.soundex?rev=1.2&content-type=text/x-cvsweb-markup&hideattic=0

Fra 1880(!)

> Der står, at soundex() er ret specifikt rettet mod det engelske
> sprog, så pas på med, hvordan du bruger det. Måske en af de andre
> funktioner fra fuzzystrmatch er mere relevant.

Der står om metaphone() at det også er indrettet på engelsk udtale,
mens levenshtein()[1] ikke har med udtale men muteringer af
ordene. Hm.

Hvad bruger folk til fonetisk søgning på andre sprog end engelsk, tro?

> Hvis du ofte skal udføre soundex() på værdierne i en kolonne, kan
> det nok betale sig at skabe et særligt index, der tager hensyn til
> dette:
> http://developer.postgresql.org/docs/postgres/indexes-expressional.html

Cool.


Tak for hjælpen,

Adam

[1] Sjov rækkefølge: 'sht'

--
Det største problem ved usenet er, at dem man har Adam Sjøgren
i sin kill-file hele tiden skifter From:-linie asjo@koldfront.dk

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste