Elasticlunr, a full-text search library for Elixir
atandarash.me
atandarash.me
An ETS table can be concurrently read (and tweaked even further for that use case if desired).
I have some tools for using that here: https://sqlite-utils.datasette.io/en/stable/python-api.html#...
Have you experimented with stemming for the full text search?
I've built (much simpler query DSLs) in nodejs & golang. Adding stemming and also boosting rare words (TF-IDF stands for “Term Frequency — Inverse Document Frequency”) helped my use-case for recalling favorite tweets
I see that the original JS version has TF-IDF - so perhaps your port does as well
The storage API is flexible, so writing to any storage provider (Google Cloud Storage, DB and so on) shouldn't be a problem. it's just a matter of grabbing the right provider or implementing one yourself.
Note: I'm not familiar with elixir so there may be some magic I'm missing
But I'm currently working on a configurable storage mechanism so that you can use whatever storage provider of your choice. See https://github.com/heywhy/ex_elasticlunr/pull/9
And don't forget to share the project with friends and colleagues who might be interested in contributing.