67 lines
1.8 KiB
Plaintext
67 lines
1.8 KiB
Plaintext
This directory contains a module that implements the "Soundex" code as
|
|
a PostgreSQL user-defined function. The Soundex system is a method of
|
|
matching similar sounding names (or any words) to the same code. It
|
|
was initially used by the United States Census in 1880, 1900, and
|
|
1910, but it has little use beyond English names (or the English
|
|
pronunciation of names), and it is not a linguistic tool.
|
|
|
|
To install it, first configure the main source tree, then run make;
|
|
make install in this directory. Finally, load the function definition
|
|
with psql:
|
|
|
|
psql -f PREFIX/share/contrib/soundex.sql
|
|
|
|
The following are some usage examples:
|
|
|
|
SELECT text_soundex('hello world!');
|
|
|
|
CREATE TABLE s (nm text)\g
|
|
|
|
insert into s values ('john')\g
|
|
insert into s values ('joan')\g
|
|
insert into s values ('wobbly')\g
|
|
|
|
select * from s
|
|
where text_soundex(nm) = text_soundex('john')\g
|
|
|
|
select nm from s a, s b
|
|
where text_soundex(a.nm) = text_soundex(b.nm)
|
|
and a.oid <> b.oid\g
|
|
|
|
CREATE FUNCTION text_sx_eq(text, text) RETURNS bool AS
|
|
'select text_soundex($1) = text_soundex($2)'
|
|
LANGUAGE 'sql'\g
|
|
|
|
CREATE FUNCTION text_sx_lt(text,text) RETURNS bool AS
|
|
'select text_soundex($1) < text_soundex($2)'
|
|
LANGUAGE 'sql'\g
|
|
|
|
CREATE FUNCTION text_sx_gt(text,text) RETURNS bool AS
|
|
'select text_soundex($1) > text_soundex($2)'
|
|
LANGUAGE 'sql';
|
|
|
|
CREATE FUNCTION text_sx_le(text,text) RETURNS bool AS
|
|
'select text_soundex($1) <= text_soundex($2)'
|
|
LANGUAGE 'sql';
|
|
|
|
CREATE FUNCTION text_sx_ge(text,text) RETURNS bool AS
|
|
'select text_soundex($1) >= text_soundex($2)'
|
|
LANGUAGE 'sql';
|
|
|
|
CREATE FUNCTION text_sx_ne(text,text) RETURNS bool AS
|
|
'select text_soundex($1) <> text_soundex($2)'
|
|
LANGUAGE 'sql';
|
|
|
|
DROP OPERATOR #= (text,text)\g
|
|
|
|
CREATE OPERATOR #= (leftarg=text, rightarg=text, procedure=text_sx_eq,
|
|
commutator=text_sx_eq)\g
|
|
|
|
SELECT *
|
|
FROM s
|
|
WHERE text_sx_eq(nm,'john')\g
|
|
|
|
SELECT *
|
|
from s
|
|
where s.nm #= 'john';
|