ExAlice

Build Status

Alice in wonderland!

WARNING: This is alpha software, do not use in production!

Installation of exalice from this repository

  1. Ensure that Elasticsearch 6.4.0 is installed

  2. Ensure that the analysis-icu plugin is installed:

# On Debian based systems
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
The path of the `plugin` command varies between different operating systems
  1. Ensure that Elasticsearch is started

  2. 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

  1. Add exalice to your list of dependencies in mix.exs:
def deps do
  [{:exalice, "~> 0.0.7-alpha"}]
end
  1. Ensure that Elasticsearch 6.4.0 is installed

  2. Ensure that the analysis-icu plugin is installed:

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
The path might vary between different operating systems
  1. Ensure that Elasticsearch is started

  2. 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: 5000
The available options for the `geocoder:` are
`ExAlice.Geocoder.Providers.GoogleMaps` or
`ExAlice.Geocoder.Providers.OpenStreetMap`
  1. (optional) Put a json file generated with pbf2json from openstreetmap pbf(s) in your data/ folder

  2. Copy the germany-streets.json sample extract in your local data/ folder inside your application

  3. Run mix exalice.bootstrap

To geocode an address execute:

  1. Run iex -S mix

  2. Type ExAlice.Geocoder.geocode("Via Recoaro 3, Broni")

  3. You should receive back data from the configured geocoder provider (OpenStreetMap or Google Maps)

  4. If you run again ExAlice.Geocoder.geocode("Via Recoaro, 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.