One HTTP service covers common product-search needs
Meilisearch accepts JSON documents, builds indexes, and answers search requests over a REST API. Its settings cover searchable attributes, ranking rules, synonyms, stop words, filters, facets, sorting, geographic data, and typo tolerance. Applications keep their own database as the record of truth and send searchable copies to Meilisearch. That division is lighter than teaching every product developer the internals of a distributed search cluster.
The README also documents semantic and hybrid search, personalization, conversational answers, document relations, tenant tokens, and search rules. Hybrid search needs an embedder and a balance between keyword and vector results. Multi-tenant use needs filters and scoped tokens that cannot expose another tenant's documents. Search quality comes from a judged query set, not from turning on every setting.
The source build passed after 551 seconds
We checked out commit 577f7af into a fresh Rust Debian container with 3 CPUs and 12 GB of RAM. The repository had 1,734 files, roughly 262,255 source lines, and occupied 33.1 MB. Installing its 784 packages took 45 seconds. The build then succeeded in 551 seconds. Sixteen CI workflow files and a Dockerfile were present, while our scan found no top-level tests directory.
Most users will run a release binary, official container, or Meilisearch Cloud instead of compiling the server. Source contributors should still care about the 9-minute compile. Build caching changes repeat runs, but a clean CI worker pays the full dependency and compiler cost. Pin the server version because index formats, settings, and client behavior can matter during an upgrade.
What happened when we ran it
Our test command exited 101 after 703 seconds. Cargo reported 106 passed and 887 failed out of 993, with 9 ignored. The final line says to rerun -p meilisearch --test integration, and the tail lists failures in vector REST and settings cases, including embedder updates, Ollama URL checks, mismatched dimensions, and user-provided vectors. Installation and compilation still succeeded.
The tail does not show a shared exception, missing system library, or failed service that explains the 887 failures. Assigning a cause would be speculation. commit 577f7af did not pass its integration target in our unprivileged sandbox. A team building from source should reproduce the command in its own image and identify the first full failure before relying on this checkout.
Relevance needs a test set drawn from your users
Meilisearch includes typo tolerance, prefix matching, facets, synonyms, and configurable ranking. None provides a universal ranking. A catalog may rank availability above text proximity, while documentation search may favor exact headings and recent versions. Build a list of real queries, expected top results, zero-result cases, misspellings, filters, and permission boundaries. Re-run it after changing searchable attributes, stop words, synonyms, embedders, or the server release.
Issue 6591 reports a hybrid ranking-score change after adding a searchable attribute whose value was null in affected documents. Issue 6600 reports stale word-count data after changing stop words during reindexing. These specific reports do not prove every installation is affected. They show that settings can change indexed state and ranking in ways a health endpoint will not detect.
Community Edition omits two scale features
The README splits the product into Community and Enterprise editions. Community Edition is MIT licensed and contains the core full-text, semantic, and hybrid search engine. Sharding and S3-streaming snapshots are listed under Enterprise Edition. Its commercial or Business Source License terms prohibit production use without a commercial agreement. A buyer expecting those capabilities should price that boundary before designing around them.
A single Community Edition node still concentrates storage and availability in one service. Persistent volumes, dumps, restore drills, master-key handling, and an indexing replay path belong in the initial deployment. Release 1.53.1, published August 13, 2026, added an experimental environment setting for the maximum number of task-queue LMDB readers. Change it only with observed queue behavior.
Geo and vector workloads need production-sized trials
Issue 6596 describes official v1.53.1 and v1.52.3 containers being killed during concurrent geo-sorted searches on about 11.2 million documents. The reporter measured a large per-query memory rise and traced it to repeated R-tree deserialization. Issue 6572 separately reports native crashes on Linux AArch64 during concurrent federated-search formatting and indexing, without a standalone reproduction. Both concern defined workloads, not ordinary text search everywhere.
Semantic search adds an external dependency when Meilisearch obtains embeddings from a model service. User-provided vectors make dimensions, model version, and reindex strategy the application's responsibility. Our failed suite included many vector-named tests, though the log does not connect them to one cause. Exercise the chosen embedder, bulk indexing, and restore process with production-shaped data and concurrency.
August 2026 activity supports a serious evaluation
GitHub showed 59,102 stars, 318 combined issues and pull requests, and a last push on August 26, 2026. Version 1.53.1 arrived 13 days earlier. That is active maintenance; it does not cancel our failed integration result. The user documentation covers APIs, ranking, security, SDKs, deployment, and editions, while issue 3206 argues that internal code documentation remains thin for contributors.
Meilisearch suits a product team that wants good search controls without owning a large cluster. The 45-second install and successful build made the code obtainable, but 887 failed tests prevent an unqualified source-health endorsement. Treat the edition boundary as an architecture decision, then prove relevance, isolation, memory use, and restore behavior against your own corpus.

