github manticoresoftware/manticoresearch release-17.5.1
Manticore Search 17.5.1

6 hours ago

Version 17.5.1

Released: February 7th 2026

Recommended Libraries

  • Recommended MCL version: 10.2.0
  • Recommended Buddy version: 3.41.0

If you follow the official installation guide, you don't need to worry about this.

❤️ We’d like to thank @pakud for their work on PR #4075.

Breaking Changes

  • ⚠️ v17.0.0 Issue #4120 MCL 10.0.0: Added support for DROP CACHE. This updates the interface between the daemon and MCL. Older Manticore Search versions don't suport the newer MCL.
  • ⚠️ v16.0.0 Issue #4019 Percolate query JSON responses now return hit _id and _score as numbers instead of strings, matching regular search; this is a breaking change for clients that relied on string type for these fields.

New Features and Improvements

  • 🆕 v17.5.0 PR #130 MCL updated to 10.2.0: QWEN model support fixed and support for additional models added.
  • 🆕 v17.3.0 PR #4186 Executor updated to 1.4.0, including an updated PHP version and the llm-php-ext extension.
  • 🆕 v17.2.0 PR #4195 Updated MCL to 10.1.0; Added support for Qwen local embeddings models.
  • 🆕 v17.1.0 Issue #3826 Jieba morphology instances are now shared across tables with the same configuration (mode, HMM flag, user dict path), greatly reducing memory use when many tables use Jieba (e.g. many empty tables no longer cause ~20 GB usage).
  • 🆕 v17.0.7 Issue #2046 In RT mode, stopwords, wordforms, exceptions, and hitless_words can be set inline in CREATE TABLE (semicolon-separated values; wordforms/exceptions use > or => for pairs, with \ escaping), so tables can be created without external files; SHOW CREATE TABLE returns these inline values.
  • 🆕 v16.3.0 KNN search now defaults to oversampling=3 and rescore=1, and supports omitting k so the query limit is used as the effective k; this reduces unnecessary oversampling and improves behavior when using SELECT * with KNN on columnar tables.
  • 🆕 v16.2.0 PR #4088 Added searchd --quiet (-q) flag to suppress startup output (banner and precache messages), printing only errors; useful when starting and stopping searchd in a loop or from scripts.
  • 🆕 v16.0.1 Issue #3336 HTTP connections are now persistent by default when using HTTP/1.1: clients no longer need to send the Keep-Alive header explicitly, reducing random connection failures in API clients (e.g. PHP, Go). To close a connection, the client sends Connection: close. HTTP/1.0 still requires Connection: keep-alive for persistence.

Bug Fixes

  • 🪲 v17.5.1 Issue #3498 Fixed JOIN results returning empty or duplicated values when a column was both a string attribute and a stored field; the attribute value is now returned correctly.
  • 🪲 v17.4.2 Issue #2559 Fixed joins on JSON string attributes (e.g. j.s) returning no matches; they now work like joins on plain string attributes.
  • 🪲 v17.4.1 Fixed stored attributes not being evaluated in final when cutoff is set.
  • 🪲 v17.2.10 Issue #425 Auto table creation (auto schema) now runs for REPLACE INTO as well as INSERT INTO, so tables are created on demand when missing.
  • 🪲 v17.2.9 Issue #3226 Fixed incorrect GROUP BY results on columnar MVA with multiple GROUP BY columns by rejecting such queries with the same error as rowwise ("MVA values can't be used in multiple group-by").
  • 🪲 v17.2.7 Issue #1737 Fixed highlight() with html_strip_mode=strip corrupting content by decoding entities and altering tags; original entity form is now preserved in the highlighted output.
  • 🪲 v17.2.6 Issue #3203 Fixed ALTER TABLE REBUILD SECONDARY failing with failed to rename … .tmp.spjidx when the table had multiple disk chunks.
  • 🪲 v17.2.5 Issue #3226 Fixed incorrect GROUP BY results on columnar MVA with multiple GROUP BY columns by rejecting such queries with the same error as rowwise ("MVA values can't be used in multiple group-by").
  • 🪲 v17.2.4 Issue #4148 Fixed distributed queries returning stored fields from the wrong local index when agent tables contain duplicate document IDs; stored fields now follow index order and the first matching index is used for duplicates.
  • 🪲 v17.2.3 Issue #4176 Fixed table rename breaking tables that use external stopwords, wordforms, or exceptions: ATTACH TABLE now migrates these files to the new chunk-based format and updates disk chunk headers, so after ALTER TABLE RENAME the daemon no longer reports missing external files on restart.
  • 🪲 v17.2.2 Issue #1065 Added the expand_blended search option so that query tokenization applies the table's blend rules and expands blended variants (e.g. "well-being" → "well-being" | "wellbeing" | "well" "being"), allowing one query to match documents indexed with any of those forms.
  • 🪲 v17.1.3 Issue #1618 Bumped Buddy to 3.40.7. Support for using Manticore with HikariCP and JPA/MyBatis (Spring Boot) is provided via Manticore Buddy, which implements the required MySQL wire protocol behavior.
  • 🪲 v17.1.2 Issue #4128 Fixed MATCH with OR over the same phrase in different fields (e.g. (@name ="^New York$") | (@ascii_name ="^New York$")) returning matches from other fields; boolean simplification no longer drops field restrictions in that case.
  • 🪲 v17.1.1 Issue #4131 Fixed ALTER TABLE with table-level settings (e.g. html_strip='1') failing on tables with auto-embeddings with "knn_dims can't be used together with model_name"; serialization now omits knn_dims when model_name is set.
  • 🪲 v17.0.12 PR #4188 Fixed incorrect filter and filter tree evaluation in joined queries.
  • 🪲 v17.0.11 Issue #3661 Fixed intermittent crashes when using columnar MVA64 attributes (e.g. during merge/optimize or when selecting stored/columnar attributes), by correcting docstore and blob-pool handling of columnar MVA64 data.
  • 🪲 v17.0.10 Issue #3944 HIGHLIGHT and snippet generation now support REGEX in the query string, so REGEX matches are highlighted correctly when the same REGEX query is used in MATCH and HIGHLIGHT.
  • 🪲 v17.0.8 Issue #4159 Fixed HISTOGRAM() returning incorrect values (e.g. zero) when the first argument is a float expression such as price*100; histogram now uses float bucketing for float-like arguments so expression results are binned correctly.
  • 🪲 v17.0.5 Issue #4148 Fixed distributed queries returning the wrong stored field when an agent has multiple local indexes with duplicate document IDs; stored field is now taken from the matching index according to index order (first encounter wins), and the behavior is documented.
  • 🪲 v17.0.3 Issue #4115 HIGHLIGHT() and snippet generation now support the explicit OR operator (|) inside quoted expressions, using the same query transform as search.
  • 🪲 v17.0.1 Issue #4118 In plain mode, KNN attributes with model_name (auto-embeddings) no longer require an explicit dims property; the table is served using the model's dimensions.
  • 🪲 v16.3.4 PR #4121 Improved performance for queries that use stored columnar attributes (early-out and cached attribute dependency checks, reduced docstore reader overhead), and added DROP CACHE to clear query, docstore, skip, and secondary index caches.
  • 🪲 v16.3.3 Issue #3928 Fixed scroll pagination when ORDER BY included a string column: the scroll token is now applied correctly and returns the next page instead of repeating the first page.
  • 🪲 v16.3.2 Issue #4040 Fixed a segmentation fault during startup when stack measurement failed on some environments (e.g. AlmaLinux 10, Docker/VM): stack mocking now compares the frame delta to the remaining stack size instead of using a sum that could overflow or be wrong, so measurement no longer enters an invalid state and searchd no longer crashes after the “Something wrong measuring stack” warning.
  • 🪲 v16.3.1 Issue #4062 JOIN queries now consistently report an error when left-table attributes are prefixed in WHERE clause filters; previously in some cases (e.g. when the right table had no full-text field) the query ran without error and returned an empty result set.
  • 🪲 v16.2.6 Issue #1827 Backtick-quoted reserved keywords (e.g. order, year, facet) are now accepted as attribute and column names in CREATE TABLE and in expressions, so tables and queries can use reserved words as identifiers when escaped with backticks.
  • 🪲 v16.2.5 Issue #4107 Fixed SphinxQL parser so expressions ending with a backticked column name parse correctly instead of raising a syntax error.
  • 🪲 v16.2.4 Issue #4106 SHOW CREATE TABLE now outputs column names that are reserved or special (e.g. knn) in backticks, so that CREATE TABLE ... LIKE and re-executing the shown DDL work when the source table has such columns.
  • 🪲 v16.2.3 Issue #3661 Corrected docstore stored-attribute count during ALTER so the non-existent .spds rename no longer occurs, and preserved existing blob data in the blob pool when adding columnar attributes so "Blob offset out of bounds" and query/merge crashes no longer occur.
  • 🪲 v16.2.1 PR #4083 Fixed incorrect diacritic-related mappings in CJK, Japanese, and Korean charset tables so that base and voiced/diacritic character forms are normalized correctly for indexing and search.
  • 🪲 v16.1.4 PR #4084 Fixed a memory leak of replication receiver state on joiner nodes when no files needed to be sent; added a cluster API command to clean up recv state on joiners so it is freed when the donor finds all nodes already in sync.
  • 🪲 v16.1.3 Issue #615 Bumped Buddy to 3.40.5. Fixed invalid JSON errors in the KNN plugin when result rows contained bigint fields: string values were serialized unquoted (e.g. numeric-looking strings like 0000000000), producing invalid JSON; string attributes are now always serialized as quoted JSON strings.
  • 🪲 v16.1.2 PR #4077 Fixed JSON field output and parsing for large double values: result-set printing now uses a fallback format when the value exceeds the default buffer, and integer literals that overflow int64 are parsed as doubles instead of incorrect integers.
  • 🪲 v16.1.1 Issue #2628 Improved KNN index error recovery: when an RT index fails to load a KNN index, partially loaded HNSW data is now cleaned up so the daemon no longer crashes when deleting the disk chunk.
  • 🪲 v16.0.13 PR #4076 Added searchd.attr_autoconv_strict option (default 0) to control string-to-number conversion on INSERT/REPLACE into RT tables: when enabled, invalid values (empty string, non-numeric, trailing characters, overflow) return errors instead of silently converting to 0.
  • 🪲 v16.0.12 Issue #1751 Fixed must_not in JSON search so it behaves as logical NOT (returning all documents that do not match the inner query); also fixed SphinxQL WHERE NOT ... for filter expressions.
  • 🪲 v16.0.11 PR #2990 Updated Libstemmer to a version that includes the fix for the Greek stemmer (libstemmer_el) bug #204, preventing the server crash that could occur with certain Greek text when using morphology='libstemmer_el' (see issue #2888).
  • 🪲 v16.0.10 Stored attribute evaluation moved to the postlimit stage when possible, improving performance.
  • 🪲 v16.0.9 Issue #3905 Fixed an intermittent crash when index rotation coincided with SIGHUP (e.g. config reload) on the master node: with dynamic config, fork() duplicated sockets and epoll could later report an fd whose associated data was already freed. Sockets are now removed from the epoll interest list with EPOLL_CTL_DEL before being closed, preventing use-after-free in LazyNetEvents_c::EventTick().
  • 🪲 v16.0.8 Issue #3418 Updated the Buddy requirement to 3.40.4, which includes an improved format for processing-error logs: when a query fails (e.g. “unknown local table(s) 'index'”), Buddy now logs the failure reason from the daemon instead of only “Failed to handle query” with no context.
  • 🪲 v16.0.7 Issue #2281 Resolved inconsistent type names for multi-value attributes in percolate tables: mva and mva64 are now accepted as synonyms for multi and multi64 in CREATE TABLE, so either naming can be used when defining tables (e.g. CREATE TABLE t (id bigint, tags mva64, ...) type='pq'). Schema output (e.g. DESC table) continues to use the existing type names for compatibility.
  • 🪲 v16.0.4 PR #4047 Updated MCL version to 9.0.1. Fixed KNN float vector handling when block_size is 1 by disabling table compression in that case (compression is not used for block size 1).
  • 🪲 v16.0.3 Issue #4042 Fixed a crash of a rejoined node when ALTER CLUSTER ... ADD TABLE was run on another node after the joiner had restarted and re-joined.
  • 🪲 v15.1.5 Issue #4009 Fixed query cache still being used when secondary index was forced via hints; the cache is now disabled so forced SI is always honored.
  • 🪲 v15.1.4 Issue #2591 Fixed the NOTNEAR full-text operator so it correctly excludes matches when the right-hand term appears within the specified distance either before or after the left-hand term (symmetric/backward matching). Previously NOTNEAR only considered the right term when it appeared after the left term, so for example d NOTNEAR/3 a could incorrectly match a document containing "a b c d". NEAR now also returns an error when the distance is 0.
  • 🪲 v15.1.3 Issue #507 Bumped Buddy to 3.40.3. Fixed multi-query requests that use fuzzy search (OPTION fuzzy=1) followed by show meta on /cli and /sql?mode=raw.
  • 🪲 v15.1.1 Issue #4009 Fixed incorrect results with SecondaryIndex hint and query cache by making SI and query cache mutually exclusive per query and adding a warning when forced SI is ignored due to a cache hit.

Don't miss a new manticoresearch release

NewReleases is sending notifications on new releases.