Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Need to search through your data? Heard about Meilisearch?

Need to search through your data? Heard about Meilisearch?

Loulier Guillaume

December 08, 2023
Tweet

More Decks by Loulier Guillaume

Other Decks in Programming

Transcript

  1. Hellcome Guillaume Loulier / @Guikingone Lead developer @SensioLabs Works mainly

    with PHP and Rust, just discovered Gleam Love motorsport, especially rallying because sliding in the snow is fun
  2. Summary 01 - Searching is hard, to say the least

    02 - Improving the wheel 03 - What about a demo? 04 - Tomorrow can wait 01
  3. Searching the needle in the haystack We, as humans, split

    our knowledge since we’re born Knowledge is seen as a resource to index, split, filter, explore, learn from We, as human being, learn by splitting and exploring possibilities
  4. Storing the world knowledge Storing for a long time is

    hard, ever heard of The Great Library of Alexandria? At the end, we mostly deal with indexes, documents and data types Indexing introduced a better learning experience / curve
  5. Experimenting Build for a specific use case at LVMH First

    iteration built in Go, rewritten in Rust, speaking of speed (< 50ms) Open-source (MIT) and french PHP SDK, Symfony bundle and many more
  6. Built for tomorrow Support for “real-time” search, multi-search, geosearch, vector

    search, faceted search and search preview Can be fully synchronized with your database(s) via Meilisync Stop words, synonyms, automatic language detection (support for most of the languages), typo-tolerant, dashboard
  7. Talking about architecture Built around JSON document structure (but also

    supports NDJSON and CSV), schemaless Automatic primary key detection, index settings and index swapping Up to 80 TiB index size, stored via LMDB and memory map Default document size to 100MB, can be changed
  8. Bucket style Crawl a document, split each field then recursively

    (tokenizer phase via charabia) run pipelines Once a query is made, a bucket sort is applied to rank documents By default, Meilisearch defines a set of rules already applied during the sort phase Custom rules can be created / configured if needed
  9. Sell me this engine Full open-source (what about Elasticsearch /

    Algolia ?) No runtime dependencies, scheduled dumps, snapshots Support for one-click deployments 12 factor app? Of course
  10. Losing grip High availability only via the cloud Symfony bundle

    opinionated Asynchronous operations No support for custom grouping, no built-in support for media, no embedded document querying