ExAlice
WARNING: This is alpha software, do not use in production!
Installation of exalice from this repository
Ensure that Elasticsearch 2.2.x is installed
Ensure that the analysis-icu plugin is installed:
# On Debian based systems sudo /usr/share/elasticsearch/bin/plugin install analysis-icu
The path of the `plugin` command varies between different operating systemsEnsure that Elasticsearch is started
Run the import (after fetching deps, and compiling everything):
mix exalice.bootstrap # Populate the storage with sample data in this repository
When exalice is used as an external dependency in your application
Add exalice to your list of dependencies in
mix.exs:def deps do
[{:exalice, "~> 0.0.3-alpha"}]end
Ensure exalice is started before your application:
def application do
[applications: [:exalice]]end
Ensure that Elasticsearch 2.2.x is installed
Ensure that the analysis-icu plugin is installed:
sudo /usr/share/elasticsearch/bin/plugin install analysis-icu
The path might vary between different operating systemsEnsure that Elasticsearch is started
Add to your config/config.exs:
config :exalice,
provider: ExAlice.Geocoder.Providers.Elastic,
geocoder: ExAlice.Geocoder.Providers.OpenStreetMap,
index: :exalice,
doc_type: :location,
file: "data/germany-streets.json",
chunks: 5000The available options for the `geocoder:` are
ExAlice.Geocoder.Providers.GoogleMaps or
ExAlice.Geocoder.Providers.OpenStreetMap(optional) Put a json file generated with pbf2json from openstreetmap pbf(s) in your
data/folderCopy the germany-streets.json sample extract in your local
data/folder inside your applicationRun mix exalice.bootstrap
To geocode an address execute:
Run
iex -S mixType
ExAlice.Geocoder.geocode("Via Recoaro 3, Broni")You should receive back data from the configured geocoder provider (OpenStreetMap or Google Maps)
If you run again
ExAlice.Geocoder.geocode("Via Recoaro 3, Broni")you should receive back data from the storage (no external lookup)
NOTE: At the moment the geocoder part that relies on google maps has no possibility to use a google maps api key.