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

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • 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?

  • 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
  • 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

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub 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

  • I want to dive into how to make search engines

    16 projects | news.ycombinator.com | 25 Aug 2022
  • Tantivy – full-text search engine library inspired by Apache Lucene

    9 projects | news.ycombinator.com | 27 May 2024
  • What is Hybrid Search?

    6 projects | dev.to | 6 Feb 2024
  • TheAlgorithms/Rust: All Algorithms Implemented in Rust

    1 project | news.ycombinator.com | 7 Jan 2024
  • Top 10 Rusty Repositories for you to start your Open Source Journey

    11 projects | dev.to | 19 Dec 2023