From: Sarah Hoffmann Date: Mon, 12 Feb 2018 18:51:02 +0000 (+0100) Subject: add develop section to documentation X-Git-Tag: v3.2.0~121 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/de9507bc630bfa6b8dea17317d2beef9a2cf5f5b add develop section to documentation --- diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index e8596e49..d2fe03d0 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -8,6 +8,7 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/appendix) ADD_CUSTOM_TARGET(doc COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/admin ${CMAKE_CURRENT_BINARY_DIR}/admin + COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/develop ${CMAKE_CURRENT_BINARY_DIR}/develop COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/index.md ${CMAKE_CURRENT_BINARY_DIR}/index.md COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Centos-7.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Centos-7.md COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-16.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-16.md diff --git a/docs/develop/overview.md b/docs/develop/overview.md new file mode 100644 index 00000000..179eeb0b --- /dev/null +++ b/docs/develop/overview.md @@ -0,0 +1,24 @@ +# Basic Architecture + +Nominatim provides geocoding based on OpenStreetMap data. It uses a Postgresql +database as a backend for storing the data. + +There are three basic parts to Nominatim's architecture: the data import, +the address computation and the search frontend. + +The __data import__ stage reads the raw OSM data and extracts all information +that is useful for geocoding. This part is done by osm2pgsql, the same tool +that can also be used to import a rendering database. It uses the special +gazetteer output plugin in `osm2pgsql/output-gazetter.[ch]pp`. The result of +the import can be found in the database table `place`. + +The __address computation__ or __indexing__ stage takes the data from `place` +and adds additional information needed for geocoding. It ranks the places by +importance, links objects that belong together and computes addresses and +the search index. Most of this work is done in Pl/pqSQL via database triggers +and can be found in the file `sql/functions.sql`. + +The __search frontend__ implements the actual API. It takes queries for +search and reverse geocoding queries from the user, looks up the data and +returns the results in the requested format. This part is written in PHP +and can be found in the `lib/` and `website/` directories. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index d647dd87..b0aee5d0 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -10,6 +10,8 @@ pages: - 'Importing and Updating' : 'admin/Import-and-Update.md' - 'Migration from older Versions' : 'admin/Migration.md' - 'Troubleshooting' : 'admin/Faq.md' + - 'Developers Guide': + - 'Overview' : 'develop/overview.md' - 'Appendix': - 'Installation on CentOS 7' : 'appendix/Install-on-Centos-7.md' - 'Installation on Ubuntu 16' : 'appendix/Install-on-Ubuntu-16.md'