In case you skip to the comments like I usually do, this post is a light comparison of Postgres FTS vs:
- MeiliSearch: https://www.meilisearch.com/
- OpenSearch: https://opensearch.org/
- SQLite FTS: https://www.sqlite.org/fts5.html
- Typesense: https://typesense.org/
Some of the callouts from the results: - Even when consuming similar content, engines can produce different results, but generally ratios between queries on the same engine should be consistent.
- Postgres FTS is quite close performance-wise to many other solutions, at least in their default configuration.
- Only Typesense and MeiliSearch properly handled mis-spellings (the "suprman" query).
- Typesense was relatively strict with matches compared to other engines.
- OpenSearch was very fast with ingest, but also failed with the misspelling out of the box.
- In-memory SQLite is by far the fastest, and PG isn't too far behind for this small data set.
there's also quickwit and sonic
different strengths and best use cases
Sonic[2] I know much less about but it also seems good. Honestly anything except ES is what I like to hear about (though OpenSearch is interesting).
Another thing I think the world really needs is a CLI +/- API tool (ideally rust lib + CLI + API) that unifies interacting with these things. I got REALLY close to writing it while working on this article, but I was already running late and I have a penchant for yak shaving.
This won't be the last thing I write about search engines -- there's been a LOT of movement in the space that has nothing to do with the elastic/opensearch debacle and I don't see enough tires getting kicked.
[0]: https://github.com/quickwit-oss/tantivy