We’re the Meilisearch team! To celebrate v1.0 of our open-source search engine, Ask us Anything!

This page summarizes the projects mentioned and recommended in the original post on /r/rust

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • MeiliSearch

    A lightning-fast search API that fits effortlessly into your apps, websites, and workflow

  • I followed the comments from https://github.com/meilisearch/MeiliSearch/discussions/1523, took a look at the linked test cases and hacked something together. I don’t have the code on me to share but it’s fairly close to the example test cases to spin up an embedded instance.

  • documentation

    Meilisearch documentation (by meilisearch)

  • I am not sure about which link you are talking about, this one about LMDB and its memory usage works. Could you please open an issue on our documentation, please?

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • heed

    A fully typed LMDB wrapper with minimum overhead 🐦

  • The big issue with compiling milli (meilisearch's rust search engine library) is that it uses LMDB. I noticed some possible smaller issues as well, but those can hopefully be worked out easily in the future. TL;DR: LMDB won't compile to WASI in the next few years, if ever. You need a WASM-friendly replacement. Looked into other options here but none are really suitable. Thus, only idea I could come up with is making a LMDB polyfill that uses IndexedDB under the hood for web support. See here: https://github.com/meilisearch/heed/issues/162. I plan on making a PR for it at some point but I have no clue when since it is a decently large feat. Side note: if you wanted to help, I would be happy to have it!

  • lindera

    A multilingual morphological analysis library.

  • Fortunately, our team is mature enough and involved in open-source to make them improve. For example, we work closely with the maintainer of the Japanese tokenizer library and we also forked the analytics-rust library, which is now also used by non-Meilisearch users!

  • segment

    Segment analytics client for Rust https://segment.com/docs/libraries/rust (by meilisearch)

  • Fortunately, our team is mature enough and involved in open-source to make them improve. For example, we work closely with the maintainer of the Japanese tokenizer library and we also forked the analytics-rust library, which is now also used by non-Meilisearch users!

  • RocksDB

    A library that provides an embeddable, persistent key-value store for fast storage.

  • LMDB is much more sain in the sense that it supports real ACID transactions instead of savepoints for RocksDB. The latter is heavy and consumes a lot more memory for a lot less read throughput. However, RocksDB has a much better parallel and concurrent write story, where you can merge entries with merge functions and therefore write from multiple CPUs.

  • wasi-libc

    WASI libc implementation for WebAssembly

  • Also, WASI has extremely rudimentary emulated memory mapping support but I would hardly call it working. You can see the current implementation here, it is pretty short: https://github.com/WebAssembly/wasi-libc/blob/main/libc-bottom-half/mman/mman.c

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • tinysearch

    🔍 Tiny, full-text search engine for static websites built with Rust and Wasm

  • 500kB sounds, like could be just shipped to the client lazily? https://github.com/tinysearch/tinysearch

  • pagefind

    Static low-bandwidth search at scale

  • An option there is https://pagefind.app/ — not as fast as a persistent server but solves some of the deployment and bandwidth issues.

  • roaring-rs

    A better compressed bitset in Rust

  • There are issues and pull requests but I advise you to look at the milli folder in the Meilisearch repository, it’s where all the logic is done. We extensively use RoaringBitmaps, heed the LMDB wrapper and grenad when indexing.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts