Skip to content

Commit

Permalink
Update README to reflect current status
Browse files Browse the repository at this point in the history
  • Loading branch information
ellenhp committed Feb 11, 2024
1 parent 88bd44d commit 31f9c99
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# 📫 Airmail 📫

Airmail is an extremely lightweight geocoder[^1] written in pure Rust. Built on top of [tantivy](https://github.com/quickwit-oss/tantivy), it offers a low memory footprint (<100MB) and lightning-quick indexing (~20k POIs per second on my machine). Airmail currently supports English queries based on place names and addresses in North American address formats. Other languages and address formats may work, but have not been systematically tested.
Airmail is an extremely lightweight geocoder[^1] written in pure Rust. Built on top of [tantivy](https://github.com/quickwit-oss/tantivy), it offers a low memory footprint and fast indexing (~8k POIs per second on my machine). Airmail currently supports English queries based on place names and addresses in North American address formats. Other languages and address formats work, but have not been systematically tested.

[^1]: A geocoder is a search engine for places. When you type in "vegan donut shop" into your maps app of choice, a geocoder is what shows you nearby places that fit your query.

### Features

Airmail's killer feature is sub-100MB memory consumption for a serving instance. The search index is memory mapped, so while performance suffers on resource-constrained systems, Airmail is able to serve requests under extraordinary memory pressure. Once Airmail is ready for production use, hosting a planet-scale web maps service for a small userbase on a low-end VPS will finally be possible.
Airmail's killer feature is the ability to query remote indices, e.g. on S3. This lets you keep your index hosting costs fixed while you scale horizontally, and lowers the baseline costs associated with hosting a planet instance by around 2x-10x compared to other geocoders.

### Roadmap

Expand All @@ -15,15 +15,16 @@ Airmail's killer feature is sub-100MB memory consumption for a serving instance.
- [x] Index OpenAddresses data.
- [ ] Index WhosOnFirst data.
- [x] API server.
- [ ] Support and test planet-scale indices.
- [x] Query remote indices.
- [x] Support and test planet-scale indices.
- [ ] Extend query parser for other locales.
- [ ] Categorical search, e.g. "coffee shops near me".
- [ ] Bounding box biasing and restriction.
- [ ] Minutely updates.
- [ ] Minutely updates?
- [ ] Systematic/automatic quality testing in CI.
- [ ] Alternate results, e.g. returning Starbucks locations for "Dunkin Donuts" queries on the US west coast.[^2]

[^2]: This will likely need to be done with a vector database and some machine learning.
[^2]: This will likely need to be done with a vector database and some machine learning, and may have major hosting cost implications. TBD.

### License

Expand Down

0 comments on commit 31f9c99

Please sign in to comment.