Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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


I'll add: (only?) Meilisearch is fully multi-lingual.

I didn't dive into the various engines, but I was looking for one that would support Russian in a small side-project, and Meilisearch was the only one [1] that had it right there out of the box

[1] Criteria for "only one" where "out of the box, ease of operation, no fiddling with configs, if not directly inside DB then with an easy HTTP API"


Good to know. If you find some Russian language support improvement we can do, don't hesitate to create an issue on our tokeniser https://github.com/meilisearch/charabia.

Moreover, it's Hacktoberfest. If you want to help us improve the language support, it would be awesome!


So far it's been working like a charm :)


Sphinx and Manticore Search [1] have support of the Russian language out of the box for like 15+ years :)

[1] https://manticoresearch.com/


MeiliSearch is really nice to work with, can recommend it. I built a Twitter bookmark search recently and used PG + MeiliSearch after using PG FTS in another project. Very happy with that choice. I like PG FTS for some use cases (internal search where you don't need the best performance) just as it's very simple and works well enough.


MeiliSearch doesn't seem secure enough for my needs, so I'm opting to use Typesense instead. E.g. no encryption at rest in MeiliSearch and they have no intention to support it.


Hello, I'm Quentin, Meilisearch's CEO. Meilisearch Cloud is encrypted at rest. We're using, at this time, a k8s with replicated and encrypted persistent volumes. We just didn't talk about it yet.


Hi Quentin, thank you for your reply. I was just referring to this comment of yours: https://github.com/meilisearch/MeiliSearch/discussions/870#d.... It is good to hear that Meilisearch cloud is encrypted though. Will definitely keep an eye on Meilisearch for future projects.


Hi Quentin, 2 small questions. When can we expect cluster/sharding support? Glad to see there’s a new release to fix slow indexing issues and support has been added for Thai. Which languages still need adding? Keep up the good work!


Hello, I would love to know what are your needs/limitations that makes you ask for cluster/sharding. Meilisearch is cloud-native, so we don't need clusters of machines to provide a highly available solution. By default, our service is highly available and vertically scalable. We don't have geo-replication today, but it will come later in 2023. I don't know your need for scalability, but we can handle almost every use case. You may only be in an Enterprise plan.

We support almost all languages. The only thing is that in some languages, without help and intervention from the community, we stop when our level of comprehension is not enough. Today we handle perfectly Latin-based languages and all languages that are space separated. We have also worked with the community to improve Chinese, Japanese, Thai, and Korean, which is under review.


Let’s say I have 10TB of data that I want to make searchable, and want to self host, what are my options with Meilisearch?


Can I get your use case? What is the data you have to index? If it's logs, indeed, Meilisearch will not be the best fit. I would recommend https://quickwit.io. If it's structured or unstructured data, even if 10TB seems huge for our use cases, I would love to put you in contact with my engineering team. We would find a way to manage it.


There is "Run in production" guide in Meilisearch documentation https://docs.meilisearch.com/learn/cookbooks/running_product... It uses DigitalOcean, but self-hosting in the right environment should work in a close way.


Thanks for the link! I however still don’t know how I’d be able to scale meilisearch to index terabytes of data.


I'm curious also about your use case (disclaimer, I'm one of the cofounder of Quickwit). Do you want simple search with a basic UI? Or some dashboarding with grafana for example?

Thanks @qdequelen for pointing out Quickwit :)


The fact that misspelling need to be turned in open search does not mean anything "failed". If you want spelling correction, turn it on, don't call it failure.


that's a fair comment - I'll get the author to update the post (I can't edit my comment anymore though)

edit: fixed https://github.com/supabase/supabase/pull/9565




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: