# Typesense changelog > A typo-tolerant open-source search engine. - Vendor: Typesense - Category: Developer Tools - Official site: https://typesense.org - Tracked by: What's New (https://whatsnew.fyi/product/typesense) - Harvested from: GitHub (typesense/typesense) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v30.2 — Version 30.2 - Date: 2026-04-19 - Version: v30.2 - Original notes: https://github.com/typesense/typesense/releases/tag/v30.2 - Permalink: https://whatsnew.fyi/product/typesense/releases/v30.2 - **fixed** — Fixed incorrect handling of numeric != filters in both lazy and eager filter execution, including explicit not-equals lists on range-indexed numeric fields - **fixed** — Fixed highlighting to correctly mark single-token phrase matches and to avoid race conditions during union searches that run alongside concurrent writes - **fixed** — Fixed missing synonyms, stem, and stemming_dictionary fields in curation GET responses - **fixed** — Fixed a number of edge cases in diversity search - **fixed** — Fixed union search deduplication so curated pinned hits are no longer collapsed - **fixed** — Fixed a bug related to reference faceting - **fixed** — Fixed vector search behavior so zero-match phrase queries still preserve vector search results - **fixed** — Fixed scoped API key handling so embedded collection parameters can supply a missing collection in multi-search requests - **fixed** — Fixed conversation search error handling so failed searches do not incorrectly reuse the first search collection - **fixed** — Fixed search cache keying so scoped API key parameters and request-specific embedded params do not collide in the cache - **fixed** — Fixed JSON response escaping by using nlohmann::json::dump() when serializing response payloads - **fixed** — Fixed /health responsiveness during heavy bulk inserts by routing health checks to the meta thread pool - **fixed** — Fixed HTTP/2 async import teardown on early exit This release fixes some important bugs identified in `v30.1`. ###### Bug Fixes - **[v30.2]** Fixed incorrect handling of numeric `!=` filters in both lazy and eager filter execution, including explicit not-equals lists on range-indexed numeric fields. - **[v30.2]** Fixed highlighting to correctly mark single-token phrase matches and to avoid race conditions during union searches that run alongside concurrent writes. - **[v30.2]** Fixed missing `synonyms`, `stem`, and `stemming_dictionary` fields in curation GET responses. - **[v30.2]** Fixed a number of edge cases in diversity search. - **[v30.2]** Fixed union search deduplication so curated pinned hits are no longer collapsed. - **[v30.2]** Fixed a bug related to reference faceting. - **[v30.2]** Fixed vector search behavior so zero-match phrase queries still preserve vector search results. - **[v30.2]** Fixed scoped API key handling so embedded collection parameters can supply a missing collection in multi-search requests. - **[v30.2]** Fixed conversation search error handling so failed searches do not incorrectly reuse the first search collection. - **[v30.2]** Fixed search cache keying so scoped API key parameters and request-specific embedded params do not collide in the cache. - **[v30.2]** Fixed JSON response escaping by using `nlohmann::json::dump()` when serializing response payloads. - **[v30.2]** Fixed `/health` responsiveness during heavy bulk inserts by routing health checks to the meta thread pool. - **[v30.2]** Fixed HTTP/2 async import teardown on early exit. ### v29.1 — Version 29.1 - Date: 2026-04-19 - Version: v29.1 - Original notes: https://github.com/typesense/typesense/releases/tag/v29.1 - Permalink: https://whatsnew.fyi/product/typesense/releases/v29.1 - **fixed** — Scoped API key handling now allows embedded collection parameters to supply a missing collection in multi-search requests - **fixed** — Conversation search error handling no longer incorrectly reuses the first search collection when searches fail - **fixed** — Search cache keying now prevents collisions between scoped API key parameters and request-specific embedded params This release fixes some important bugs identified in `v29.0`. ###### Bug Fixes - **[v29.1]** Fixed scoped API key handling so embedded collection parameters can supply a missing collection in multi-search requests. - **[v29.1]** Fixed conversation search error handling so failed searches do not incorrectly reuse the first search collection. - **[v29.1]** Fixed search cache keying so scoped API key parameters and request-specific embedded params do not collide in the cache. ### v30.1 — Version 30.1 - Date: 2026-01-29 - Version: v30.1 - Original notes: https://github.com/typesense/typesense/releases/tag/v30.1 - Permalink: https://whatsnew.fyi/product/typesense/releases/v30.1 - **fixed** — Fixed search latency metric in the stats.json endpoint that was overflowing ##### Bug fixes - **[New in 30.1]**: This release contains a bug fix that caused the search latency metric in the `stats.json` endpoint to overflow ### v30.0 — Version 30.0 - Date: 2026-01-27 - Version: v30.0 - Original notes: https://github.com/typesense/typesense/releases/tag/v30.0 - Permalink: https://whatsnew.fyi/product/typesense/releases/v30.0 - **added** — Diversify search results using Maximum Marginal Relevance (MMR) to diversify the top 250 hits on a pre-defined similarity metric - **added** — Synonyms are now top-level resources and can be shared between collections - **added** — Curation rules are now top-level resources and can be shared between multiple collections - **added** — Support facet_by for JOINed reference fields - **added** — Fetch related documents count for a document in a joined collection with the include_fields parameter - **added** — Support sorting and limit on joined fields with include_fields parameter - **added** — Support for altering reference fields in the collection schema - **added** — Add cascade_delete: false JOIN parameter for reference fields to override default cascade delete behavior - **added** — Support group_by with Union search - **added** — Support pinned_hits search parameter in Union search - **added** — Support removing duplicates in Union search with remove_duplicates flag - **added** — Add facet_sample_slope search parameter for dynamic facet sampling - **added** — Support binding to and serving requests over IPv6 addresses - **added** — Support copying documents when cloning collections - **added** — Support ! as a standalone negation operator in filters with field:![value] syntax - **added** — Support for Azure OpenAI models in Natural Language Search - **added** — Support for GCP service account authentication in Natural Language Search models - **added** — Support for GCP service account authentication for auto-embedding with GCP models - **added** — Add truncate parameter in collection schema for configurable token truncation on string fields - **added** — Add group_max_candidates search parameter to make found value accurate for group_by queries - **changed** — Improved synonym matching logic to rank matches by overall match quality rather than just number of matched tokens This release contains new features, enhancements, performance improvements, bug fixes and important API changes for synonyms, curation rules and analytics rules. ###### New Features - **Diversify Search Results**: Using Maximum Marginal Relevance (MMR), you can now diversify the top 250 hits on a pre-defined similarity metric. [(Docs)](https://typesense.org/docs/30.0/api/curation.html#diversify-results) - **Global Synonyms**: Synonyms are now top-level resources, and can be shared between collections. [(Docs)](https://typesense.org/docs/30.0/api/synonyms.html) - **Global Curation Rules**: Curations are also top-level resources now, and can be shared between multiple collections. [(Docs)](https://typesense.org/docs/30.0/api/curation.html) - **New features in JOINs**: - `facet_by` now supports JOINed reference fields. [(Docs)](https://typesense.org/docs/30.0/api/search.html#facet-referencing) - Fetch related docs count for a document in a joined collection with the `include_fields` param. [(Docs)](https://typesense.org/docs/30.0/api/joins.html#get-number-of-related-documents) - Support sorting and limit on joined fields with `include_fields` parameter. [(Docs)](https://typesense.org/docs/30.0/api/joins.html#Sorting-and-limiting-on-joined-collection-docs) - Support for altering reference fields in the collection schema. - New `cascade_delete: false` JOIN parameter for a `reference` field, to override the default behavior of document being cascade deleted in case all the documents it references are deleted. Requires `async_reference` parameter to be `true`. [(Docs)](https://typesense.org/docs/30.0/api/joins.html#cascade-delete) - **New features in Union Search**: - Support for `group_by` with Union search. [(Docs)](https://typesense.org/docs/30.0/api/federated-multi-search.html#grouping-with-union) - Support for the `pinned_hits` search parameter in Union search. - Support for filtering out duplicates when using Union search with a new flag called `remove_duplicates`. [(Docs)](https://typesense.org/docs/30.0/api/federated-multi-search.html#removing-duplicates-in-union-search) - **Facet Sampling**: Make facet sampling dynamic using the new `facet_sample_slope` search parameter. [(Docs)](https://typesense.org/docs/30.0/api/search.html#faceting-parameters) - **IPv6 Support**: Typesense now supports binding to and serving requests over IPv6 addresses, enabling seamless integration and connectivity in modern IPv6-only or dual-stack networks. ###### Enhancements - Support for (optionally) copying documents when cloning collections. [(Docs)](https://typesense.org/docs/30.0/api/collections.html#clone-collection-with-documents) - Support for `!` as a standalone negation operator in filters, allowing `field:![value]` syntax as an alternative to `field:!=[value]`. - Support for Azure OpenAI models in Natural Language Search. [(Docs)](https://typesense.org/docs/30.0/api/natural-language-search.html#supported-model-types) - Support for GCP service account authentication in Natural Language Search models. [(Docs)](https://typesense.org/docs/30.0/api/natural-language-search.html#supported-model-types) - Support for GCP service account authentication for auto-embedding with GCP models. [(Docs)](https://typesense.org/docs/30.0/api/vector-search.html#service-account-authentication) - Configurable token truncation for string fields to improve exact match filtering on long strings, using the new `truncate` parameter in the collection schema. [(Docs)](https://typesense.org/docs/30.0/api/collections.html#field-parameters) - Return an error message when a field is declared that references another field of the same collection. - New `group_max_candidates` search parameter which overrides the behavior of `group_by` queries introduced in [v29.0](https://typesense.org/docs/29.0/api/#deprecations-behavior-changes) where `found` value is an approximation. When `group_max_candidates` is passed, `found` will _[Truncated at 4000 characters — full notes: https://github.com/typesense/typesense/releases/tag/v30.0]_ ### v29.0 — Version 29.0 - Date: 2025-06-30 - Version: v29.0 - Original notes: https://github.com/typesense/typesense/releases/tag/v29.0 - Permalink: https://whatsnew.fyi/product/typesense/releases/v29.0 This release contains important new features, performance improvements and bug fixes. ###### New Features - **Natural Language Search:** Typesense can now detect user intent in natural language queries and convert them into structured search queries using LLMs. This allows a user query like `q: A Honda or BMW with at least 200 hp` to be understood and executed by Typesense as `filter_by: make:[Honda, BMW] && engine_hp:>=200` automatically. ([Docs](https://typesense.org/docs/29.0/api/natural-language-search.html)) - **Dynamic Sorting in Overrides:** Typesense now supports dynamic sorting rules within override definitions, similar to dynamic filtering. This enables query-dependent sorting of results through override rules ([Docs](https://typesense.org/docs/29.0/api/curation.html#dynamic-sorting)). - **Filter multiple properties within a nested array of objects**: You can now scope filter expressions to a specific nested object within an array field ([Docs](https://typesense.org/docs/guide/tips-for-filtering.html#filtering-nested-array-objects)). - **Streaming support for conversations:** responses from LLM APIs are now directly streamed, allowing you to build interactive chat experiences. ([Docs](https://typesense.org/docs/29.0/api/conversational-search-rag.html#streaming-conversations)). - **Support adding meta fields to query analytics documents**: You can now pass the `filter_by` search parameter and a new `analytics_tag` search parameter that you can set to any string you need, to be stored with your popular and no-hits queries. This gives you additional context around the search. ([Docs](https://typesense.org/docs/29.0/api/analytics-query-suggestions.html#query-analytics-with-meta-fields)). - You can now fetch JOIN reference fields in the GET document API ([Docs](https://typesense.org/docs/29.0/api/joins.html#reference-fields-in-document-retrieval)) ###### Enhancements - Improved group-by performance and resource usage, especially when high cardinality fields (like `productId`) are used for grouping. - Improved performance of numeric range queries. - Return uniform API response structure when `union: true` is set, regardless of number of collections queried. - Ability to customize RocksDB parameters like write buffer sizes for better performance. ([Docs](https://typesense.org/docs/29.0/api/server-configuration.html#on-disk-db-fine-tuning)). - Support for filtering with nested object fields in overrides. - Ability to do image search using user-uploaded images at runtime ([Docs](https://typesense.org/docs/29.0/api/image-search.html#search-for-similar-images-with-dynamic-image)). - Support for configuring the max `group_limit` via a new server-side parameter called `max-group-limit` ([Docs](https://typesense.org/docs/29.0/api/server-configuration.html#search-limits)). - Support caching for remote query embeddings via `embedding-cache-num-entries` server-side parameter ([Docs](https://typesense.org/docs/29.0/api/server-configuration.html#resource-usage)). - Support for sorting when doing a one-to-many JOIN ([Docs](https://typesense.org/docs/29.0/api/joins.html#sorting-on-one-to-many-joins)). - Support for bucketing on vector distance ([Docs](https://typesense.org/docs/29.0/api/vector-search.html#vector-distance-bucketing)). - Improved synonym matching when multiple synonym definitions match a given search query. - New Cache hit/miss statistics (`cache_hit_count`, `cache_miss_count`, `cache_hit_ratio`) are now exposed in `stats.json` - Support for Azure OpenAI and Google Gemini in conversation models. - Support dimension truncation for GCP text embedding models, by setting `num_dim`. - Add support for Azure OpenAI for embedding generation. - Support for `document_task` and `query_task` support for GCP text embedding models. - Support for OpenAI compatible conversation models using the `openai_url` (base) and `openai_path` parameters. - The region parameter is now configurable for GCP mode _[Truncated at 4000 characters — full notes: https://github.com/typesense/typesense/releases/tag/v29.0]_ ### v28.0 — Version 28.0 - Date: 2025-02-18 - Version: v28.0 - Original notes: https://github.com/typesense/typesense/releases/tag/v28.0 - Permalink: https://whatsnew.fyi/product/typesense/releases/v28.0 This release contains important new features, performance improvements and bug fixes. ###### New Features - Support union / merging of search results across collections containing similar type of fields. (https://github.com/typesense/typesense/pull/2051) - Dictionary based stemming: stemming is now configurable through an import of a custom dictionary that maps a word to a root form. (https://github.com/typesense/typesense/pull/2062) - Allow search results to be randomized via `sort_by=_rand(seed)` clause. (https://github.com/typesense/typesense/pull/1918) - Ability to re-rank hybrid search hits by augmenting their keyword / semantic match score when the hit was identified by only either keyword or vector search. (https://github.com/typesense/typesense/pull/1968) - Sort hits based on a pivot value. (https://github.com/typesense/typesense/pull/2003) - Support decay functions in `sort_by` to support gaussian, linear, and exponential decay of values. (https://github.com/typesense/typesense/pull/2036) - Field level `token_separators` and `symbols_to_index` are now supported. (https://github.com/typesense/typesense/pull/2118) - Support bucketing of text match scores based on `bucket_size` parameter. (https://github.com/typesense/typesense/pull/2120) - Ability to truncate a collection. (https://github.com/typesense/typesense/pull/2127) - Index and search on geo polygons. (https://github.com/typesense/typesense/pull/2150) ###### Enhancements - Support `distance_threshold` parameter for vector query that uses inner product distance. - Allow updating of remote model's `api_key` parameter. (https://github.com/typesense/typesense/pull/1944) - Support `max_filter_by_candidates` search parameter that controls the number of similar words that Typesense considers during fuzzy search on `filter_by` values (default is `4`). - Performance and stability fixes for joins. - API endpoint that returns status of alter schema operations that are in-progress. (https://github.com/typesense/typesense/pull/2123) - Faceting performance improvements. ###### Bug Fixes - Fixed fields with `async_reference` property not being restored correctly on restart. - Fixed sorting with nested reference fields. - Addressed edge cases in conversation API. - Assign default sorting score if reference is not found while sorting by a reference field. - Fix `distance_threshold` in `vector_query` not working correctly while sorting. - Add validation to ensure that embedding fields are of type `float[]`. - Fix vector query format validation error messages. - Fix race condition in high concurrency image embedding. - Fix `flat_search_cutoff` not working for hybrid search. ###### Deprecations / behavior changes There are no deprecations / behavior changes in this release. ##### Upgrading Before upgrading your existing Typesense cluster to v28.0, please review the behavior changes above to prepare your application for the upgrade. We'd recommend testing on your development / staging environments before upgrading. ###### Typesense Cloud If you're on Typesense Cloud: 1. Go to [https://cloud.typesense.org/clusters](https://cloud.typesense.org/clusters). 2. Click on your cluster 3. Click on "Cluster Configuration" on the left-side pane, and then click on "Modify" 4. Select a new Typesense Server version in the dropdown 5. Schedule a time for the upgrade. ###### Self Hosted If you're self-hosting Typesense, here are instructions on how to upgrade: https://typesense.org/docs/28.0/api/#self-hosted ##### Downgrading Once you upgrade to `v28` of Typesense Server, you can only downgrade back to `v27` or `v26`. ###### Documentation View the complete API documentation for this release here: [https://typesense.org/docs/28.0/api/](https://typesense.org/docs/28.0/api/) ### v27.1 — Version 27.1 - Date: 2024-09-27 - Version: v27.1 - Original notes: https://github.com/typesense/typesense/releases/tag/v27.1 - Permalink: https://whatsnew.fyi/product/typesense/releases/v27.1 This release fixes some bugs and performance regressions identified in `v27.0`. ###### Bug Fixes - **[New in v27.1]** Fixed an important performance regression in evaluation of range filter queries. - **[New in v27.1]** When infix search does not find highlight, use normal search. - **[New in v27.1]** Don't return error if `limit_hits` threshold is breached. Instead, just return empty results. - **[New in v27.1]** Add guard for non-indexed default sorting field. - **[New in v27.1]** Fix OpenAI error handling during conversation model init. - **[New in v27.1]** Fixed usage of `distance_threshold` parameter for inner product vector distance. - **[New in v27.1]** Fixed and improved validation for analytics rules and events. - **[New in v27.1]** Fixed an edge case with scoped API key usage with joins. - **[New in v27.1]** Fixed prefix highlighting bugs that occurred due to use of stemming. - **[New in v27.1]** Initialize analytics db store only if analytics dir is given. We will create a directory if it does not exist. - **[New in v27.1]** Fixed exporting regression that prevented embedding fields, joined fields and non-schema fields from being exported. - **[New in v27.1]** Fixed `geo_distance_meters` returning values in `km` / `mi`. ##### Upgrading Before upgrading your existing Typesense cluster to v27.x, please review the behavior changes above to prepare your application for the upgrade. We'd recommend testing on your development / staging environments before upgrading. ###### Typesense Cloud If you're on Typesense Cloud: 1. Go to [https://cloud.typesense.org/clusters](https://cloud.typesense.org/clusters). 2. Click on your cluster 3. Click on "Cluster Configuration" on the left-side pane, and then click on "Modify" 4. Select a new Typesense Server version in the dropdown 5. Schedule a time for the upgrade. ###### Self Hosted If you're self-hosting Typesense, here are instructions on how to upgrade: https://typesense.org/docs/27.1/api/#self-hosted ##### Downgrading Once you upgrade to `v27` of Typesense Server, you can only downgrade back to `v26` or `v0.25.x`. ###### Documentation View the complete API documentation for this release here: [https://typesense.org/docs/27.1/api/](https://typesense.org/docs/27.1/api/) ### v27.0 — Version 27.0 - Date: 2024-08-27 - Version: v27.0 - Original notes: https://github.com/typesense/typesense/releases/tag/v27.0 - Permalink: https://whatsnew.fyi/product/typesense/releases/v27.0 This release contains important new features, performance improvements and bug fixes. ###### New Features - A new `text_match_type` mode called `sum_score` which sums the field-level text match scores to arrive at a document-level score. - This mode is helpful in cases where you need to consider a document with more matches across more weighted fields, to be more relevant. - [Docs](https://typesense.org/docs/27.0/api/search.html#ranking-and-sorting-parameters) - Enable/disable typo tolerance on alphanumeric words in the query via the `enable_typos_for_alpha_numerical_tokens` search parameter. Default: `true`. - For eg: If you need to disable typo tolerance for a word that contains a mix of letters and numbers like `turbo100`, you can now set `enable_typos_for_alpha_numerical_tokens: false` as a search parameter. - [Docs](https://typesense.org/docs/27.0/api/search.html#typo-tolerance-parameters) - Conversation History from Conversational Searches is now stored as a regular Typesense collection. - This is new feature, also has a corresponding breaking change. See the `Deprecations / behavior changes` section below. - [Docs](https://typesense.org/docs/27.0/api/conversational-search-rag.html#create-a-conversation-history-collection) - Support synonyms on query prefixes and typo-corrected query tokens via the `synonym_prefix` and `synonym_num_typos` parameters. - Defaults to [`synonym_prefix: false`](https://typesense.org/docs/27.0/api/search.html#ranking-and-sorting-parameters) and [`synonym_num_typos: 0`](https://typesense.org/docs/27.0/api/search.html#typo-tolerance-parameters). - Customization of faceting index used for search via the `facet_strategy` parameter. - By default, Typesense picks an efficient `facet_strategy` for you based on some built-heuristics. But this flag now lets you explicitly control which strategy to use: `exhaustive` or `top_values` or `automatic` (default). - [Docs](https://typesense.org/docs/27.0/api/search.html#faceting-parameters) - Support nested reference collections (when using JOINs), in `include_fields` search parameter, Eg: `include_fields: $Collection_B(title, $Collection_A(title))` - Support `sort_by` of nested join fields. Eg: `sort_by: $Collection_B( $Collection_A(price) )` - Ability to use JOINs when using the documents export endpoint, with the `filter_by` and `include_fields` parameters. - Support exact prefix value filtering via the `:=` operation. For example, given `filter_by: name:= S*`. we will match `Steve Jobs` but NOT `Adam Stator`. ###### Enhancements **Search Parameters:** - Added `enable_synonyms` boolean flag to enable/disable the application of synonyms during search (default: `true`). - Added `filter_curated_hits` search parameter which allows you to customize filter behavior for pinned hits. - Added search parameter `enable_analytics` that prevents the given query from being used for analytics aggregation. - Support array fields in `facet_return_parent` search parameter. - Allow special characters in range facet labels. - Increase max length of facet value stored to `255` characters. **Server-side improvements:** - Added `--filter-by-max-ops` server-side flag that can customize the maximum number of operators that can be present in a `filter_by` clause (default: `100`). - Added `--max-per-page` server-side flag that increases the number of hits that can be fetched within a single page. Default: `250`. - Allow dynamic update of cache size via the `/config` API with the `cache-num-entries` key. - Use 64K page size for Jemalloc on ARM64 / Linux. - Log in-flight search queries during a crash. **AI Search:** - Added API key support for vLLM conversation models using the `api_key` parameter - Suppress punctuations and non-speech tokens from appearing in voice search (e.g. `hmm`). **API Endpoints:** - Support `include_fields` and `exclude_fields` in the single document fetch (`GET /colle _[Truncated at 4000 characters — full notes: https://github.com/typesense/typesense/releases/tag/v27.0]_ ### v26.0 — Version 26.0 - Date: 2024-04-01 - Version: v26.0 - Original notes: https://github.com/typesense/typesense/releases/tag/v26.0 - Permalink: https://whatsnew.fyi/product/typesense/releases/v26.0 This release contains important new features, performance improvements and bug fixes. ###### New Versioning Scheme Starting with this release, we're dropping the `0.x.y` versioning scheming and switching to a `x.y` versioning scheme. So we're going from `0.25 --> 26.0`. Typesense has been production-ready for a few years now, and is actively used at scale in production, serving billions of search requests per month just on Typesense Cloud, and several billions more in self-hosted clusters. We originally intended the `0.x` versioning scheme to communicate that there might be backward in-compatible changes between versions. In reality though, we've only had to do two backward incompatible changes over the years. However, the usage of the previous `0.x` versioning scheme seemed to mis-communicate Typesense's production-readiness among new users, causing confusion. Switching from `0.x` to `1.x` also seemed to mis-communicate the progress and feature-set maturity we've built over the years. So we decided to simply drop the `0.` and switch to whole numbers for major versions, to convey Typesense's progress over the last 8 years. ###### New Features - **Built-in Conversational Search (RAG):** You can now seamlessly run a semantic search and then pass the result to an LLM for summarizing the result as an answer. - Built-in support for OpenAI and Cloudflare Workers AI hosted models. - [Docs](https://typesense.org/docs/26.0/api/conversational-search-rag.html) - **Image Search:** Search through images using text descriptions of their contents, or perform similarity searches, using the CLIP model. - [Docs](https://typesense.org/docs/26.0/api/image-search.html) - **Voice Search:** Capture and send query via voice recordings -- Typesense will transcribe (via Whisper model) and provide search results. - [Docs](https://typesense.org/docs/26.0/api/voice-search-query.html) - **JOINs:** Connect one or more collections via common reference fields and join them during query time. This allows you to model SQL-like relationships elegantly. - [Docs](https://typesense.org/docs/26.0/api/joins.html) - **Search Personalization using Historical Queries:** The `vector_query` parameter in Vector Search supports a `qs` parameter (stands for plural of the `q` parameter) that accepts a comma-separated list of historical search queries. We compute the average embedding of these queries and use that as the vector for search. - [Docs](https://typesense.org/docs/26.0/api/vector-search.html#searching-with-historical-queries) - **Analytics:** - Ability to track queries that don't produce hits. [Docs](https://typesense.org/docs/26.0/api/analytics-query-suggestions.html#no-hits-queries) - Ability to track counts of document-level analytics (eg: clicks, views, etc) to improve search relevance. [Docs](https://typesense.org/docs/26.0/api/analytics-query-suggestions.html#counting-events-for-popularity) - **Sorting based on Filter Score:** You can now use `_eval` in `sort_by` and assign scores to records that match particular filters, to boost or bury a set of records together. the filter expression. - [Docs](https://typesense.org/docs/26.0/api/search.html#sorting-based-on-filter-score) - **Stemming:** Allows handling common word variations of the same root word. This is helpful for different word-forms of the same root word (eg: plurals / singular). - Eg: Searching for `walking`, will also return results with `walk`, `walked`, `walks`, etc when stemming is enabled. - [Docs](https://typesense.org/docs/26.0/api/collections.html#schema-parameters). See the `stem: true` property under the `fields` parameter. - **Prefix Filtering:** During filtering, you can now query on records that begin with a given prefix string. - Eg: `company_name: Acm*` will return names that begin with `acm`. - Previously, only full-word or full-attribute-value matching was possible in `filter_by` and only `q` suppor _[Truncated at 4000 characters — full notes: https://github.com/typesense/typesense/releases/tag/v26.0]_ ### v0.25.2 — Version 0.25.2 - Date: 2024-01-03 - Version: v0.25.2 - Original notes: https://github.com/typesense/typesense/releases/tag/v0.25.2 - Permalink: https://whatsnew.fyi/product/typesense/releases/v0.25.2 This release fixes some important bugs identified in `v0.25.1` and also adds several enhancements to existing features. So we highly recommend upgrading to it. ##### Enhancements - New search parameter flag `prioritize_num_matching_fields` that allows you to configure whether the text match score should consider number of matching fields as a ranking criteria. This defaults to `true`. - Unload embedding model and free memory when no collections use a given model. - Allow the hybrid search / keyword search weight (`alpha`) to be configurable in `vector_query`. - Allow the direction of drop tokens to be configurable via `drop_tokens_mode` search parameter. - Handle zero width non-joiner character for Persian. - Ability to apply vector search only on the results of keyword search. - Prevent Typesense from loading an embedding model that exceeds available memory. - Improvements to range faceting: float value support, min/max ranges by leaving range param blank, support spaces in range label. - Support `remote_embedding_timeout_ms` and `remote_embedding_num_tries` for indexing. - Better isolation of operations across collections. - Parameterize compaction of store during collection drop via the `compact_store` parameter. - Server argument for configuring the periodic DB compaction interval via `db-compaction-interval`. Default: `604800` (seconds). - When using `group_by`, you can now control if documents with a `null` value in the grouped field should be placed in one group together, or should not be grouped using the `group_missing_values` parameter. ##### Bug fixes - Improve precision of HNSW index under frequent deletion and updates of vectors. - Fixed a regression in analytics aggregation for aggregation intervals configured to > 60 seconds. - Fixed a bug that prevented two embedding field names from sharing the same prefix. - Fixed reindexing of old documents with embeddings on collection schema update. - Fixed group by search that used facet range query. - Fixed edge cases in indexing and querying of optional nested fields. - Fixed hanging when PaLM API is down. - Fixed an edge case in deletion of values from infix search index. - Fixed hybrid search not considering `hidden_hits` search parameter. - Tweaked text embedding mean-pooling code to match the vectors generated by Python libraries. - Fixed truncation of certain float values in facet response. ###### Upgrade Before upgrading your existing Typesense cluster to `v0.25.2`, please review the behavior changes above to prepare your application for the upgrade. - For self-hosted Typesense deployment, please refer to the important upgrade section of the [0.25.2 documentation](https://typesense.org/docs/0.25.2/api/#upgrading). This particular version requires a specific set of upgrade steps especially for multi-node clusters. - For Typesense Cloud, visit your [clusters page](https://cloud.typesense.org/clusters), click on the cluster you want to upgrade, click on "Cluster Configuration" on the right pane, then "Modify", pick `0.25.2` and schedule a time for your upgrade. ###### Downgrade Once you upgrade to `v0.25.x` of Typesense Server the internal structure of the data directory becomes incompatible with older versions of Typesense (`v0.24`). However, if you need to downgrade to `v0.24`, we've released a special version `v0.24.2` that backports these data structure changes back to `v0.24` while keeping other `v0.24.1` features as is. So `v0.25.x` can only be downgraded to `v0.24.2`. But `v0.25.2` can be downgraded to `v0.25.1` and `v0.25.0` if needed. ###### Documentation View the complete API documentation for this release here: [https://typesense.org/docs/0.25.2/api/](https://typesense.org/docs/0.25.2/api/)