Photon is an open source geocoder built for OpenStreetMap data. It is based on elasticsearch - an efficient, powerful and highly scalable search platform.
Photon was started by komoot and provides search-as-you-type and multilingual support. It's used in production with thousands of requests per minute at www.komoot.de. Find our public API and demo on photon.komoot.de.
We are a very young project, feel free to test and participate! The previous version based on solr is accessible in the deprecated solr branch.
- high performance
- highly scalability
- search-as-you-type
- multilingual search
- location bias
- typo tolerance
- OSM data import (built upon Nominatim) inclusive continuous updates
photon requires java, at least version 6.
get photon
wget http://photon.komoot.de/data/photon-0.1.2.jar
download search index (31 gb compressed, 66 gb uncompressed, worldwide, languages: English, German, French and Italian)
wget http://photon.komoot.de/data/photon_data_140706.tar.bz2
lbzip2 -d photon_data_140706.tar.bz2
tar xf photon_data_140706.tar
start photon
java -jar photon-0.1.2.jar
Check the URL http://localhost:2322/api?q=berlin
to see if photon is running without problems. You may want to use our leaflet plugin to see the results on a map.
discover more of photon's feature with its usage java -jar photon-0.1.2.jar -h
.
If you need search data in other languages or restricted to a country you will need to create your search data by your own. Once you have your nominatim database ready, you can import the data to photon:
java -jar photon-0.1.2.jar -nominatim-import -host localhost -port 5432 -database nominatim -user nominatim -password ...
The import of worldwide data set will take some hours/days, ssd disk are recommended to accelerate nominatim queries.
A nominatim setup is also a requirement to have continuous updates. To keep in sync with the latest OSM changes run:
export NOMINATIM_DIR=/home/nominatim/...
./continuously_update_from_nominatim.sh
java -jar photon-0.1.2.jar
http://localhost:2322/api?q=berlin
http://localhost:2322/api?q=berlin&lon=10&lat=52
http://localhost:2322/api?q=berlin&limit=2
http://localhost:2322/api?q=berlin&lang=it
{
"features": [
{
"properties": {
"name": "Berlin",
"country": "Germany",
"osm_key": "place",
"osm_value": "city",
"osm_type": "N",
"osm_id": 240109189
},
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
13.3888599,
52.5170365
]
}
},
{
"properties": {
"name": "Berlin Olympic Stadium",
"street": "Olympischer Platz",
"housenumber": "3",
"postcode": "14053",
"country": "Germany",
"osm_key": "leisure",
"osm_value": "stadium",
"osm_type": "W",
"osm_id": 38862723,
"extent": [
13.23727,
52.5157151,
13.241757,
52.5135972
]
},
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
13.239514674078611,
52.51467945
]
}
}]
}
Photon's search configuration was developed with a specific test framework. It is written in Python and hosted separately.
Let us know what you think about photon! Create a github ticket or drop us an email in https://lists.openstreetmap.org/listinfo/photon
Photon software is open source and licensed under Apache License, Version 2.0