urn:noticeable:projects:OQ6S6bocohVRzziV6TlcMeilisearch Cloud Updatesmeilisearch.com2024-09-03T16:49:37.575ZCopyright © Meilisearch CloudNoticeablehttps://storage.noticeable.io/projects/OQ6S6bocohVRzziV6Tlc/newspages/QB1DVOr4P2DzXd5ks5aP/01h55ta3gsngw0fnwwnq8pmqqg-header-logo.pnghttps://storage.noticeable.io/projects/OQ6S6bocohVRzziV6Tlc/newspages/QB1DVOr4P2DzXd5ks5aP/01h55ta3gsngw0fnwwnq8pmqqg-header-logo.png#ff5caaurn:noticeable:publications:PKNmbfZ7WqR9PrySnJHl2024-09-03T16:47:51.663Z2024-09-03T16:49:37.575ZMeilisearch 1.10.1Meilisearch 1.10.1 improves search under heavy loads and speeds up documents deletion....<p>Meilisearch 1.10.1 improves search under heavy loads and speeds up documents deletion.</p>Laurent Cazanove[email protected]urn:noticeable:publications:OykPnLXmtX3iV0LehcN32024-08-28T09:03:52.065Z2024-08-28T09:04:05.073ZMeilisearch 1.10Meilisearch 1.10 introduces federated search and locale settings, and paves the way for AI-powered search stabilization....<p>Meilisearch 1.10 introduces federated search and locale settings, and paves the way for AI-powered search stabilization.</p>Laurent Cazanove[email protected]urn:noticeable:publications:uh2676zmEnWC6driKRC72024-06-20T08:54:41.361Z2024-06-20T09:01:11.622ZMeilisearch v1.8.3Meilisearch 1.8.3 fixes a bug that can lead to memory leaks. ...<p>Meilisearch 1.8.3 fixes a bug that can lead to memory leaks. </p>Laurent Cazanove[email protected]urn:noticeable:publications:JYlISO7fBlKtxfb2Wv0s2024-06-11T10:38:58.444Z2024-06-11T10:42:13.082ZMeilisearch v1.8.2Meilisearch 1.8.2 fixes a bug causing freezes when received many concurrent search requests....<p><span style="color: rgb(209, 210, 211);">Meilisearch 1.8.2 fixes a bug causing freezes when received many concurrent search requests.</span></p>Laurent Cazanove[email protected]urn:noticeable:publications:1w5sgnE1p9ALLLIKbCdf2024-05-22T15:22:31.973Z2024-05-22T15:26:32.553ZMeilisearch 1.8.1This patch release includes a fix for geo search users. Upgrade your Meilisearch version from your project’s settings page....<p>This patch release includes a fix for geo search users. </p><p>Upgrade your Meilisearch version from your project’s settings page.</p>Laurent Cazanove[email protected]urn:noticeable:publications:NOgnPlpauHjuDnMcSgTh2024-05-13T13:53:09.590Z2024-05-13T13:56:17.715ZMeilisearch 1.8Meilisearch 1.8 brings negative keyword search, improvements in search robustness and AI search, including new embedders....<p><span style="color: rgb(146, 163, 171);">Meilisearch 1.8 brings negative keyword search, improvements in search robustness and AI search, including new embedders.</span></p>Laurent Cazanove[email protected]urn:noticeable:publications:KZDsfWUEcU8GvWTTDsGR2024-03-18T12:12:14.502Z2024-03-18T12:12:22.916ZMeilisearch 1.7Meilisearch 1.7 stabilizes ranking score details, adds GPU support for Hugging Face embeddings, and integrates the latest OpenAI embedding models....<p><span style="color: rgb(146, 163, 171);">Meilisearch 1.7 stabilizes ranking score details, adds GPU support for Hugging Face embeddings, and integrates the latest OpenAI embedding models.</span></p>Laurent Cazanove[email protected]urn:noticeable:publications:TFNjbWQieyplxWjlJm272024-01-16T09:00:00Z2024-01-15T16:19:15.774ZMeilisearch v1.6We’re announcing the release of Meilisearch 1.6. Let’s dive into some of the most important changes. You can also view the full changelog on GitHub. Experimental feature: hybrid search Meilisearch introduces hybrid search. It combines...<p>We’re announcing the release of Meilisearch 1.6. Let’s dive into some of the most important changes. You can also view the <a href="https://github.com/meilisearch/meilisearch/releases/tag/v1.6.0?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage" rel="noreferrer">full changelog</a>&nbsp;on GitHub.</p><h2>Experimental feature: hybrid search</h2><p>Meilisearch introduces hybrid search. It combines full-text and semantic search to enhance the accuracy and comprehensiveness of search results. Picture a movie app like <a href="https://where2watch.meilisearch.com/?utm_campaign=release-v1-6&amp;utm_source= noticeable" rel="noreferrer">where2watch</a>. Now, your users will be able to find those movies they can't quite name but remember the story.</p><p>Furthermore, Meilisearch now streamlines the creation of vector embeddings. Choose your preferred embedders and Meilisearch will handle all interactions with external tools for you.</p><h3>Configuring embedders</h3><p>You can <a href="https://www.meilisearch.com/docs/learn/experimental/vector_search?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#generate-vector-embeddings" rel="noreferrer">configure the embedders</a> in your index settings. Select from three types of embedders for your needs:</p><p><code>openAI</code>:</p><ul><li><p>Uses the <a href="https://openai.com/?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage" rel="noreferrer">OpenAI</a> API for computing embeddings</p></li><li><p>Requires an OpenAI API key for operation</p></li></ul><p><code>huggingFace</code>:</p><ul><li><p>Enables local computation of embeddings by downloading models from the <a href="https://huggingface.co/models?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage" rel="noreferrer">HuggingFace Hub</a></p></li><li><p>Operates on your CPU–not your GPU–which may impact indexing performance</p></li></ul><p><code>userProvided</code>:</p><ul><li><p>Functions similarly to Meilisearch v1.3, with a key difference: you must define a specific embedder</p></li><li><p>Allows you to add pre-computed embeddings into your documents. You perform searches using vectors instead of text.</p></li></ul><p>To use hybrid search, define at least one embedder in the index settings:</p><p></p><pre><code>{ "embedders": { "default": { "source": "openAi", "apiKey": "&lt;your-OpenAI-API-key&gt;", "model": "text-embedding-ada-002", "documentTemplate": "A movie titled '{{doc.title}}' whose description starts with {{doc.overview|truncatewords: 20}}" }, "image": { "source": "userProvided", "dimensions": 512 }, "translation": { "source": "huggingFace", "model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2", "documentTemplate": "A movie titled '{{doc.title}}' whose description starts with {{doc.overview|truncatewords: 20}}" } } } </code></pre><p>The <code>documentTemplate</code> field acts as a blueprint for creating your document's embedding. It uses the <a href="https://shopify.dev/docs/api/liquid?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">Liquid template language</a>. While its inclusion is optional, it is highly recommended, especially since embedding models are optimized for concise texts. It keeps only the necessary content, excluding non-essential data like <code>id</code>, and helps in adding context to increase relevancy.</p><h3><strong>Hybrid search</strong></h3><p>To <a href="https://www.meilisearch.com/docs/learn/experimental/vector_search?utm_campaign=release-v1-6&amp;utm_source=release&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#vector-search-with-auto-embeddings">perform a hybrid search</a>, use the hybrid field within the <code>POST /index/:index_uid/search</code> route.</p><pre><code>{ "q": "Plumbers and dinosaurs", "hybrid": { "semanticRatio": 0.9, "embedder": "default" } } </code></pre><p><code>embedder</code>: an embedder from the options configured in your index settings.</p><p><code>semanticRatio</code>: a floating value ranging from <code>0</code> to <code>1</code>; <code>1</code> is a&nbsp; fully semantic search; <code>0</code> is an exact, match-focused full-text search; the default is <code>0.5</code> which mixes both methods.</p><p>Your control over the semantic ratio directly influences how search results are ranked. A higher semantic ratio shifts the focus towards the context and meaning behind your query, ranking results that are more semantically relevant higher.&nbsp;</p><p>On the other hand, a lower semantic ratio increases the weight given to keyword accuracy in the ranking process, bringing results that closely match your specific search terms to the forefront.</p><h3><strong>Breaking changes in the experimental vector search API</strong></h3><p>Meilisearch v1.6 introduces some breaking changes in the vector search API.</p><p>Previously, you could send vectors without specifying a model. Now, you must define a model in the settings:</p><pre><code>"embedders": { "default": { "source": "userProvided", "dimensions": 512 } } </code></pre><p>Because Meilisearch now supports multiple embedders, it has updated the vector submission format from arrays to JSON objects.</p><ul><li><p>Previews format: <code>“_vectors”: [[0.0, 0.1]]</code></p></li><li><p>New format: <code>“_vectors”: {“image2text”: [0.0, 0.1, …]}</code></p></li></ul><p>For detailed information on these updates, refer to the <a href="https://www.meilisearch.com/docs/learn/experimental/vector_search?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">documentation</a>.</p><p>For in-depth technical information, explore the <a href="https://blog.meilisearch.com/spotify-inspired-hybrid-search-and-rust/?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">series of articles</a> on <a href="https://github.com/meilisearch/arroy?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">Arroy</a>, an open-source repository based on <a href="https://github.com/spotify/annoy?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">Spotify’s Annoy</a> and developed in Rust. This library, created and maintained by the Meilisearch engine team, specializes in searching for vectors in a space that are near a specified query vector.</p><h2><strong>Performance optimization</strong></h2><h3>Improved indexing speed</h3><p>We're thrilled to share a major enhancement in Meilisearch's indexing performance. Our recent tests, including scenarios with frequent and partial document updates, have shown impressive results: <strong>a reduction in indexing time by up to 50%</strong>, and in some cases, <strong>even as much as 75%</strong>.&nbsp;</p><p>Thanks to our latest optimizations, Meilisearch now <strong>stores and pre-computes less data</strong>. Additionally, during document updates, it <strong>re-indexes or deletes only the necessary data</strong>. For instance, in an e-commerce dataset, updating the stock level of a product results in re-indexing just the 'stock' field, rather than the entire product document.</p><h3>Disk space usage reduction</h3><p>Meilisearch reduces internal data storage, leading to a more <strong>compact database size</strong> on your disk. With a dataset of approximately 15Mb, we observed a <strong>40% to 50% reduction in database size</strong>.</p><p>This enhancement not only reduces the database size, but also <strong>improves its stability</strong>, making the space savings more evident as the number of documents increases.</p><h2><strong>New feature: customize proximity precision</strong></h2><p>To further reduce indexing speed, Meilisearch now allows you to tailor the accuracy of the <a href="https://www.meilisearch.com/docs/learn/core_concepts/relevancy?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#3-proximity">proximity ranking rule</a> to your specific needs.</p><p>The proximity ranking rule is computationally demanding and may lead to longer indexing times. Reducing its accuracy can greatly enhance performance, and in most scenarios, it will not substantially affect the relevancy of the results.</p><p>To adjust its impact <a href="https://www.meilisearch.com/docs/reference/api/settings?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#proximity-precision">configure the </a><code><a href="https://www.meilisearch.com/docs/reference/api/settings?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#proximity-precision">proximityPrecision</a></code><a href="https://www.meilisearch.com/docs/reference/api/settings?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#proximity-precision"> setting</a>:</p><pre><code>curl \ -X PATCH 'http://localhost:7700/indexes/books/settings/proximity-precision' \ -H 'Content-Type: application/json' \ --data-binary '{ "proximityPrecision": "byAttribute" }'</code></pre><p>The default <code>proximityPrecision</code> setting is <code>byWord</code>, which calculates proximity based on exact word distances.&nbsp;</p><p>The&nbsp;<code>byAttribute</code> setting considers words in the same attribute as proximate, regardless of their exact distance.</p><p>Using <code>byAttribute</code> can boost the indexing speed, but it might slightly change how relevant the results are. This becomes more noticeable in searches where it's important for words to be close to each other.</p><p>For example, when you're looking through song lyrics or long articles, like trying to find 'world war' in a bunch of Wikipedia pages, you might end up with results that contain these words but not necessarily close together or in the desired order. This is also true for <a href="https://www.meilisearch.com/docs/reference/api/search?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#phrase-search">phrase searches</a> and for searches involving <a href="https://www.meilisearch.com/docs/learn/configuration/synonyms?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#multi-word-synonyms">multi-word synonyms</a>, where the specific combination of words is crucial.</p><h2><strong>New feature: task queue webhook</strong></h2><p>Meilisearch now offers a webhook feature to notify a custom URL when an asynchronous task finishes (either succeeds, fails, or gets canceled).</p><p>This feature is particularly useful for streamlining workflows, saving you from polling the tasks route.</p><p>Set up your webhook at launch using these environment variables:</p><pre><code>MEILI_TASK_WEBHOOK_URL=<a href="https://mywebsite.com/my-super-webhook?user=1234&amp;number=8&amp;utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">https://mywebsite.com/my-super-webhook?user=1234&amp;number=8</a> MEILI_TASK_WEBHOOK_AUTHORIZATION_HEADER='Bearer 12340987546wowowlolol'</code></pre><p>You can also use the respective command-line options.</p><p>Once set up, the webhook sends out a payload in <a href="https://www.meilisearch.com/docs/learn/core_concepts/documents?utm_campaign=release-v1-6&amp;utm_source=blog&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#ndjson">JSON Lines (ndjson) format</a> to your specified URL, containing the list of finished tasks:</p><pre><code>//POST HTTP request to <a href="https://myproject.com/mywebhook?common=people&amp;utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">https://myproject.com/mywebhook?common=people</a> {"uid":4,"indexUid":"movie","status":"failed","type":"indexDeletion","canceledBy":null,"details.deletedDocuments":0,"error.message":"Index `movie` not found.","error.code":"index_not_found","error.type":"invalid_request","error.link":"<a href="https://docs.meilisearch.com/errors?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#index_not_found" rel="noopener nofollow" target="_blank">https://docs.meilisearch.com/errors#index_not_found</a>","duration":"PT0.001192S","enqueuedAt":"2022-08-04T12:28:15.159167Z","startedAt":"2022-08-04T12:28:15.161996Z","finishedAt":"2022-08-04T12:28:15.163188Z"} {"uid":5,"indexUid":"movie","status":"failed","type":"indexDeletion","canceledBy":null,"details.deletedDocuments":0,"error.message":"Index `movie` not found.","error.code":"index_not_found","error.type":"invalid_request","error.link":"<a href="https://docs.meilisearch.com/errors?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#index_not_found" rel="noopener nofollow" target="_blank">https://docs.meilisearch.com/errors#index_not_found</a>","duration":"PT0.001192S","enqueuedAt":"2022-08-04T12:28:15.159167Z","startedAt":"2022-08-04T12:28:15.161996Z","finishedAt":"2022-08-04T12:28:15.163188Z"}</code></pre><h2><strong>Experimental feature: limit the number of batched tasks</strong></h2><p>To speed up the indexing process, Meilisearch processes similar <a href="https://www.meilisearch.com/docs/learn/async/asynchronous_operations?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#tasks-and-asynchronous-operations">tasks</a> in large batches. However, excessive <a href="https://www.meilisearch.com/docs/learn/async/asynchronous_operations?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#task-queue">queued tasks</a> can occasionally cause crashes or stalls.</p><p>To control the number of batched tasks, set the limit at launch using either the command-line argument <code>--experimental-max-number-of-batched-tasks</code>, the <code>MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS</code> environment variable, or the <a href="https://www.meilisearch.com/docs/learn/configuration/instance_options?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage#configuration-file">configuration file</a>.</p><h2><strong>Contributors shout-out</strong></h2><p>We are really grateful for all the community members who participated in this release.We would like to thank <a href="https://github.com/Karribalu?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">@Karribalu</a> and <a href="https://github.com/vivek-26?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">@vivek-26</a> for their help with <a href="https://github.com/meilisearch/meilisearch?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">Meilisearch</a>. We also want to send a special shout-out to our SDKs maintainers 🦸</p><hr><p>And that’s it for v1.6! This release post highlights the most significant updates. For an exhaustive listing, read the <a href="https://github.com/meilisearch/meilisearch/releases/tag/v1.6.0?utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">changelog on Github</a>.</p><p>Stay in the loop of everything Meilisearch by subscribing to <a href="https://meilisearch.us2.list-manage.com/subscribe?u=27870f7b71c908a8b359599fb&amp;id=79582d828e&amp;ref=blog.meilisearch.com&amp;utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">the newsletter</a>. To learn more about Meilisearch's future and help shape it, take a look at our <a href="https://roadmap.meilisearch.com/?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage" rel="noreferrer">roadmap</a> and come participate in our <a href="https://github.com/meilisearch/product/discussions?ref=blog.meilisearch.com&amp;utm_source=noticeable&amp;utm_campaign=meilisearch.meilisearch-v1-6&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">Product Discussions</a>.</p><p>For anything else, join our developers community on <a href="https://discord.meilisearch.com/?utm_campaign=release-v1-6&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.TFNjbWQieyplxWjlJm27&amp;utm_medium=newspage">Discord</a>.</p>Carolina Ferreira[email protected]urn:noticeable:publications:2crTcNRjA59f4ZXXbI9l2023-11-21T15:31:18.349Z2023-11-22T16:50:08.933ZWhat's new in v1.5?We're excited to announce the release of Meilisearch v1.5 🚀<p>We’re excited to announce the release of Meilisearch 1.5. 🚀</p><p>This release brings:</p><ul><li><p>Up to 25% faster indexing</p></li><li><p>On-demand snapshots</p></li><li><p>Puffin report exports</p></li></ul><p>Learn more in the release notes. 👇</p>Laurent Cazanove[email protected]urn:noticeable:publications:Kb8RJbGmt5E9yNBVCWuU2023-09-26T08:34:05.388Z2023-09-26T08:44:15.009ZWhat's new in v1.4?Meilisearch v1.4 introduces the ability to configure custom text separators and user-defined dictionaries.<p>Let's take a look at some of the most significant changes in Meilisearch's latest update. We’ll go over the main changes in this article, but you can also view the <a href="https://github.com/meilisearch/meilisearch/releases/tag/v1.4.0?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">full changelog</a> on GitHub.</p><h2><strong>New feature: custom text separators</strong></h2><p>To make string data searchable, Meilisearch relies on <a href="https://www.meilisearch.com/docs/learn/advanced/datatypes?utm_campaign=release-v1-4&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage#separators">separators</a>, as they serve to divide a string into tokens or words. Examples of separators include whitespaces, full-stops, or number signs (#). They play a crucial role in helping Meilisearch segment text effectively and enhance search relevancy.</p><p>Meilisearch comes with a predefined list of separators. However, these separators do not suit all use cases. For example, in a hashtag search, the number sign should not be considered a separator, but part of the word.</p><p>Starting with v1.4, Meilisearch allows you to <a href="https://www.meilisearch.com/docs/reference/api/settings?utm_campaign=release-v1-4&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage#separator-tokens" rel="noopener nofollow" target="_blank">customize the separators list</a> to suit your specific needs.</p><p>You can configure <em>Separator Tokens</em> from your index’s settings. Both fields accept JSON format. To include separators, add them to the 'separators' field. To exclude certain characters as separators, list them under 'non-separators'.</p><p></p><figure><img src="https://storage.noticeable.io/projects/OQ6S6bocohVRzziV6Tlc/publications/Kb8RJbGmt5E9yNBVCWuU/01hb87fjmkhx57ax0vcxxvsqn9-image.png" alt="Screenshot of Meilisearch Cloud UI showcasing the 'separator settings' section. It features two fields: one for listing separators and another for listing non-separators." loading="lazy" title="Screenshot of Meilisearch Cloud UI showcasing the 'separator settings' section. It features two fields: one for listing separators and another for listing non-separators."></figure><p></p><h2><strong>New feature: custom dictionary</strong></h2><p>Now, you can <a href="https://www.meilisearch.com/docs/reference/api/settings?utm_campaign=release-v1-4&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage#dictionary" rel="noopener nofollow" target="_blank">add a custom word dictionary</a> to improve Meilisearch's segmentation of specific words. This is particularly useful when working with domain-specific terminology like “Node.js” or proper nouns like “E. E. Cummings”.</p><p>You can configure a <em>Custom Dictionary</em> by providing a JSON array in your index’s settings. You can also upload a JSON file as dictionary.</p><h3><strong>Using custom dictionary with stop words and synonyms</strong></h3><p>The introduction of a custom dictionary acts as a powerful adjunct to existing features like <a href="https://www.meilisearch.com/docs/reference/api/settings?utm_campaign=release-v1-4&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage#stop-words">stopWords</a> and <a href="https://www.meilisearch.com/docs/learn/configuration/synonyms?utm_campaign=release-v1-4&amp;utm_source=noticeable&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">synonyms</a>. Together, they synergize to improve the relevancy of the search results.</p><p>Let’s consider a literary database where an author's name may appear in various forms or abbreviations. This leads to fragmented search results, making it challenging for users to find works by that specific author. For example, take the different ways one might search for works by E. E. Cummings. Using the custom dictionary feature along synonyms can standardize these name variations, thereby enhancing the relevancy of search results.</p><p>Using synonyms and custom dictionary together, here’s an example of index settings that address this scenario:</p><pre><code>{ "dictionary": ["E. E.", "E.E.", "E E"], "synonyms": { "E. E.": [ "E.E.", "E E", "Edward Estlin"], "E.E.": ["E. E.", "E E", "Edward Estlin"], "E E": ["E. E.", "E.E.", "Edward Estlin"], "Edward Estlin": ["E. E.", "E.E.", "E E"] }</code></pre><h2><strong>Breaking bug fix: improved filtering with backslashes</strong></h2><p>In v1.4, we've addressed a longstanding bug that users faced when using backslashes (\) at the end of the<code> filter</code> search parameter expression.</p><p>Let’s consider the following documents:</p><pre><code>[ { "id": 1, "path": "my\\test\\path" }, { "id": 2, "path": "my\\test\\path\\" } ]</code></pre><p><strong>Note</strong>: The double backslashes in the example are for JSON escaping.</p><p>Before v1.4.0, trying to filter on the second document using either of the filters <code>path = "my\\test\\path\\"</code> or <code>path = "my\\test\\path\\\"</code> would lead to errors.</p><p>Now, you can use any filter expression with backslashes. Just make sure to escape each <code>\</code> character in your filter.</p><p>Using our example, to filter on the second document successfully, the filter should be written as: <code>path = "my\\\\test\\\\path\\\\"</code>.</p><p>⚠️ <strong>Warning: </strong>If you're upgrading from v1.3.X or earlier and have previously used backslashes in filters, be aware that in v1.4.0, the correct filter for the first document should be <code>path = "my\\\\test\\\\path"</code>.</p><p>Two layers of escaping are applied: : first, escape for JSON, then for the Meilisearch filter. Meilisearch turns <code>\\\\</code> back to <code>\\</code>, and JSON parsing will result in a single <code>\</code>.</p><blockquote><p>💡 Consider using built-in methods of your programming language to handle backslashes:<br>- PHP:<a href="https://www.php.net/manual/en/function.addslashes.php?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage"> addslashes() function</a><br>- JavaScript: While JS doesn't have a specific method for adding slashes. You can use the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">replace method</a>, as suggested on <a href="https://stackoverflow.com/questions/7744912/making-a-javascript-string-sql-friendly?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">StackOverflow</a></p></blockquote><h2><strong>Contributors</strong></h2><p>We are really grateful for all the community members who participated in this release. We would like to thank: <a href="https://github.com/dogukanakkaya?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">@dogukanakkaya</a>, <a href="https://github.com/JannisK89?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">@JannisK89</a>, and <a href="https://github.com/vivek-26?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">@vivek-26</a> for their help with Meilisearch. We want to send a special shout out to <a href="https://github.com/mmachatschek/?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">mmachatschek</a> for his help and involvement with the backlash bug.</p><h2><strong>Conclusion</strong></h2><p>And that’s it for v1.4! Remember to check the <a href="https://github.com/meilisearch/meilisearch/releases/tag/v1.4.0?&amp;utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">changelog</a> for the full release notes, and see you next time!</p><p>You can stay in the loop by subscribing to our<a href="https://meilisearch.us2.list-manage.com/subscribe?u=27870f7b71c908a8b359599fb&amp;id=79582d828e&amp;utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage"> newsletter</a>. To learn more about Meilisearch's future and help shape it, take a look at our <a href="https://roadmap.meilisearch.com/?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">roadmap</a> and come participate in our <a href="https://github.com/meilisearch/product/discussions?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage">Product Discussions</a>.</p><p>For anything else, join our developers community on<a href="https://discord.gg/meilisearch?utm_source=noticeable&amp;utm_campaign=meilisearch.whats-new-in-v1-4&amp;utm_content=publication+link&amp;utm_id=OQ6S6bocohVRzziV6Tlc.QB1DVOr4P2DzXd5ks5aP.Kb8RJbGmt5E9yNBVCWuU&amp;utm_medium=newspage"> Discord</a>.</p>Carolina Ferreira[email protected]