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

https://jxyz.me/modern-search-engines

Yup! I'd heard of Quickwit and sonic, but Quickwit seems to have pivoted to being a log-search focused engine. It's built on Tantivy[0] IIRC so I could have used something like Toshi[1].

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

[1]: https://github.com/toshi-search/Toshi

[2]: https://github.com/valeriansaliou/sonic