- Notifications
You must be signed in to change notification settings - Fork20
PostgreSQL binding for libpostal
License
NotificationsYou must be signed in to change notification settings
pramsey/pgsql-postal
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Libpostal is a C library for parsing/normalizing street addresses around the world. Having that functionality directly in PostgreSQL could potentially be useful.
This extension is for that.
- PostgreSQL 9.4 and higher is required because of the JSONB support. Could reduce that by using ordinary JSON as a return type instead.
- libpostal takes quite a lot of memory when intialized, and has a noticeable start-up time. When you first run
postal_normalize
orpostal_parse
there will be a delay while the library data first loads. - Backends with
libpostal
active will be quite large in terms of memory usage (about 1Gb on my computer) so you probably want to take care about spawning too many of them at once.
=# SELECT unnest(postal_normalize('412 first ave, victoria, bc')); unnest ------------------------------------------ 412 1st avenue victoria british columbia 412 1st avenue victoria bc(2 rows)=# SELECT postal_parse('412 first ave, victoria, bc'); postal_parse --------------------------------------------------------------------------------- {"city": "victoria", "road": "first ave", "state": "bc", "house_number": "412"}(1 row)
postal_normalize(address TEXT)
returnsTEXT[]
postal_parse(address TEXT)
returnsJSONB
If you have PostgreSQL devel packages and CURL devel packages installed, you should havepg_config
on your path. Confirm by runningwhich pg_config
.
Edit the paths toPOSTAL_INCLUDE
andPOSTAL_LIBS
in theMakefile
to refer to yourlibpostal
install location, and then run:
makemake install
Then in your databaseCREATE EXTENSION postal
.
Sorry, no story here yet.
- Perhaps allow normalization options other than the defaults.