1,202 karma · joined February 18, 2019
Speaking of features, both Sphinx (as a closed-source project) and Manticore (as an open-source project) have added some nice improvements during last years. But again, if you're happy with the 20-year-old version, there's probably nothing to worry about.
Custom script scoring is available - https://manual.manticoresearch.com/Extensions/UDFs_and_Plugi...
Vectors - yes. Recent blog post on it https://manticoresearch.com/blog/quantization/
Pipelined aggregations - no.
Nested documents - no, but Manticore supports INNER JOIN and LEFT JOIN.
Sorry for the confusion :)
- choosing which characters should be treated as token characters, and using the rest as token separators
- defining "blend chars" — for example, the hyphen (-) could make sense as both a separator and a non-separator in your case
- or optionally adding it to the ignore_chars list
- there's also regexp_filter to process tokens when indexing and searching
That said, setting things like this up perfectly is always tricky with any search engine, because the words and punctuation in real data often don't follow regular patterns. It's especially difficult when you want to find "abc def" by "ab cd ef" which may be a common situation in your case.
Manticore Search's query language is more expressive than Lucene's. While Lucene supports basic boolean logic, field search, phrase queries, wildcards, and proximity, Manticore adds many powerful operators. These include quorum matching (/N), strict word order (<<), NEAR/NOTNEAR proximity, MAYBE (soft OR), exact form (=word), position anchors (^word, word$), full regular expressions, and more. Manticore uses SQL-style syntax with a MATCH() clause for full-text search, making it easier to combine text search with filters and ranking.
Manticore has a modern multithreading architecture with efficient query parallelization that fully utilizes all CPU cores. It supports real-time indexing - documents are searchable immediately after insertion, with no need to wait for flushes or refreshes.
It uses row-wise storage optimized for small to large datasets, and for even larger datasets that don’t fit into memory, there's support for columnar storage through the Manticore Columnar Library.
Secondary indexes are built automatically using the PGM-index (Piecewise Geometric Model index), which enables efficient filtering and sorting by mapping keys to their memory locations. The cost-based query optimizer uses statistics about the data to choose the most efficient execution plan for each query.
Manticore is SQL-first: SQL is its native syntax, and it speaks the MySQL protocol, so it works out of the box with MySQL clients.
It's written in C++, starts quickly, uses minimal RAM, and avoids garbage collection — which helps keep latencies low and stable even under load.
As for benchmarks, there's a growing collection of them at https://db-benchmarks.com, where Manticore is compared to Elasticsearch, MySQL, PostgreSQL, Meilisearch, Typesense, and others. The results are open and reproducible.
A few points that came up in the thread and are worth clarifying:
- We do get compared to Elasticsearch a lot. While we support some of its APIs, Manticore isn't a drop-in replacement. We've focused on performance, simplicity, and keeping things open-source without vendor lock-in. Our own SQL-based query language and REST endpoints are part of that philosophy. - @mdaniel was right to question the "drop-in" wording — that's not our goal. - As @sandstrom pointed out, tools like Typesense and Meilisearch are part of this evolving search space. We see Manticore fitting in where users want powerful full-text and vector search capabilities with lower resource overhead and SQL capabilities (we support JSON too though)
We'd love to hear from you: - What are your main use cases for search or log indexing? - Which Elasticsearch features (if any) are absolutely essential for you? - Are there performance comparisons or scaling challenges you'd like to see addressed?
Happy to answer any questions or dive deeper.
Key points:
- Columnar Storage: Efficiently handles large datasets on disk, ideal for terabyte-scale data. It's not enabled by default but can be set up easily with "CREATE TABLE ... ENGINE='columnar'".
- Faceted Search: Probably easier than anywhere else with just "FACET <field name>" added to your "SELECT" query.
- MySQL Protocol and SQL Support: If you’re familiar with SQL and MySQL, it's easier to get started compared to other search engines.
Manticore does support facet search and it's quite powerful in Manticore:
- docs - https://manual.manticoresearch.com/Searching/Faceted_search#...
- interactive course - https://play.manticoresearch.com/faceting/
Search-as-you-type depends more on the client, not on the backend. However, Manticore provides the autocomplete and fuzzy features (both in beta stage though). More info here https://github.com/manticoresoftware/manticoresearch/issues/...
If it works for you - great. If you need more flexibility in terms of data tokenization, matching and ranking you can consider Manticore Search [1] instead of Elasticsearch since it's a continuation (a fork made in 2017) of the Sphinx search engine mentioned in the article on mysql.com and has a better integration with MySQL than Elasticsearch (e.g. you can use Linux mysql client or any programming language mysql connector to make queries to Manticore).
[1] https://dev.mysql.com/blog-archive/rankings-with-innodb-full...
> I tried multiple times, but the operation failed continuously, due to JVM memory constraints
Here's a script https://github.com/db-benchmarks/db-benchmarks/blob/main/tes... which loads 1.7B NYC taxi ride documents into Elasticsearch.