diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index d527dd65ca..ba1f8cb7c4 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -1108,3 +1108,39 @@ search_parameter_guide_attributes_to_search_on_1: |- "q": "adventure", "attributesToSearchOn": ["overview"] }' +get_separator_tokens_1: |- + curl \ + -X GET 'http://localhost:7700/indexes/articles/settings/separator-tokens' +update_separator_tokens_1: |- + curl \ + -X PUT 'http://localhost:7700/indexes/articles/settings/separator-tokens' \ + -H 'Content-Type: application/json' \ + --data-binary '["|", "…"]' +reset_separator_tokens_1: |- + curl \ + -X DELETE 'http://localhost:7700/indexes/articles/settings/separator-tokens' +get_non_separator_tokens_1: |- + curl \ + -X GET 'http://localhost:7700/indexes/articles/settings/non-separator-tokens' +update_non_separator_tokens_1: |- + curl \ + -X PUT 'http://localhost:7700/indexes/articles/settings/non-separator-tokens' \ + -H 'Content-Type: application/json' \ + --data-binary '["@", "#"]' +reset_non_separator_tokens_1: |- + curl \ + -X DELETE 'http://localhost:7700/indexes/articles/settings/non-separator-tokens' +get_dictionary_1: |- + curl \ + -X GET 'http://localhost:7700/indexes/books/settings/dictionary' +update_dictionary_1: |- + curl \ + -X PUT 'http://localhost:7700/indexes/books/settings/dictionary' \ + -H 'Content-Type: application/json' \ + --data-binary '[ + "J. R. R.", + "W. E. B." + ]' +reset_dictionary_1: |- + curl \ + -X DELETE 'http://localhost:7700/indexes/books/settings/dictionary' diff --git a/assets/misc/meilisearch-collection-postman.json b/assets/misc/meilisearch-collection-postman.json index 73efe376bd..0ffcc5be90 100644 --- a/assets/misc/meilisearch-collection-postman.json +++ b/assets/misc/meilisearch-collection-postman.json @@ -1,7 +1,7 @@ { "info": { - "_postman_id": "af5f1b99-255f-4eb3-9756-6636be3a0f16", - "name": "Meilisearch v1.3", + "_postman_id": "ca046707-e482-4e2c-a524-0574bd10dd5f", + "name": "Meilisearch v1.4", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ @@ -1812,6 +1812,297 @@ } }, "response": [] + }, + { + "name": "Get dictionary", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/dictionary", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "dictionary" + ] + } + }, + "response": [] + }, + { + "name": "Update dictionary", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "[\"J. R. R.\", \"W. E. B.\"]" + }, + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/dictionary", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "dictionary" + ] + } + }, + "response": [] + }, + { + "name": "Reset dictionary", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/dictionary", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "dictionary" + ] + } + }, + "response": [] + }, + { + "name": "Get separator tokens", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/separator-tokens", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "separator-tokens" + ] + } + }, + "response": [] + }, + { + "name": "Update separator tokens", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "[\"|\", \"…\"]" + }, + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/separator-tokens", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "separator-tokens" + ] + } + }, + "response": [] + }, + { + "name": "Reset separator tokens", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/separator-tokens", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "separator-tokens" + ] + } + }, + "response": [] + }, + { + "name": "Get non-separator tokens", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/non-separator-tokens", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "non-separator-tokens" + ] + } + }, + "response": [] + }, + { + "name": "Update non-separator tokens", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "[\"@\", \"#\"]" + }, + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/non-separator-tokens", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "non-separator-tokens" + ] + } + }, + "response": [] + }, + { + "name": "Reset non-separator tokens", + "protocolProfileBehavior": { + "disabledSystemHeaders": { + "content-type": true + } + }, + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{url}}/indexes/{{indexUID}}/settings/non-separator-tokens", + "host": [ + "{{url}}" + ], + "path": [ + "indexes", + "{{indexUID}}", + "settings", + "non-separator-tokens" + ] + } + }, + "response": [] } ] }, @@ -2165,11 +2456,13 @@ "raw": "{ \n \"facetQuery\": \"adventure\",\n \"facetName\": \"genre\",\n \"q\": \"prinec\"\n}" }, "url": { - "raw": "{{url}}/facet-search", + "raw": "{{url}}/indexes/{{indexUID}}/facet-search", "host": [ "{{url}}" ], "path": [ + "indexes", + "{{indexUID}}", "facet-search" ] } diff --git a/learn/cookbooks/docker.mdx b/learn/cookbooks/docker.mdx index a3d6b608dc..7aa0b60a52 100644 --- a/learn/cookbooks/docker.mdx +++ b/learn/cookbooks/docker.mdx @@ -9,7 +9,7 @@ Docker is a tool that bundles applications into containers. Docker containers en Docker containers are distributed in images. To use Meilisearch, use the `docker pull` command to download a Meilisearch image: ```sh -docker pull getmeili/meilisearch:v1.3 +docker pull getmeili/meilisearch:v1.4 ``` Meilisearch deploys a new Docker image with every release of the engine. Each image is tagged with the corresponding Meilisearch version, indicated in the above example by the text following the `:` symbol. You can see [the full list of available Meilisearch Docker images](https://hub.docker.com/r/getmeili/meilisearch/tags#!) on Docker Hub. @@ -26,7 +26,7 @@ After completing the previous step, use `docker run` to launch the Meilisearch i docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 ``` ### Configure Meilisearch @@ -42,7 +42,7 @@ docker run -it --rm \ -p 7700:7700 \ -e MEILI_MASTER_KEY='MASTER_KEY'\ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 ``` #### Passing instance options with CLI arguments @@ -53,7 +53,7 @@ If you want to pass command-line arguments to Meilisearch with Docker, you must docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 meilisearch --master-key="MASTER_KEY" ``` @@ -71,7 +71,7 @@ To keep your data intact between reboots, specify a dedicated volume by running docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 ``` The example above uses `$(pwd)/meili_data`, which is a directory in the host machine. Depending on your OS, mounting volumes from the host to the container might result in performance loss and is only recommended when developing your application. @@ -86,7 +86,7 @@ To import a dump, use Meilisearch's `--import-dump` command-line option and spec docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 meilisearch --import-dump /meili_data/dumps/20200813-042312213.dump ``` @@ -106,7 +106,7 @@ To generate a Meilisearch snapshot with Docker, launch Meilisearch with `--sched docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 meilisearch --schedule-snapshot --snapshot-dir /meili_data/snapshots ``` @@ -118,7 +118,7 @@ To import a snapshot, launch Meilisearch with the `--import-snapshot` option: docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 meilisearch --import-snapshot /meili_data/snapshots/data.ms.snapshot ``` diff --git a/learn/getting_started/installation.mdx b/learn/getting_started/installation.mdx index 2f22453ff4..1e69addb38 100644 --- a/learn/getting_started/installation.mdx +++ b/learn/getting_started/installation.mdx @@ -49,14 +49,14 @@ These commands launch the **latest stable release** of Meilisearch. ```bash # Fetch the latest version of Meilisearch image from DockerHub -docker pull getmeili/meilisearch:v1.3 +docker pull getmeili/meilisearch:v1.4 # Launch Meilisearch in development mode with a master key docker run -it --rm \ -p 7700:7700 \ -e MEILI_ENV='development' \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.3 + getmeili/meilisearch:v1.4 # Use ${pwd} instead of $(pwd) in PowerShell ``` diff --git a/learn/inner_workings/datatypes.mdx b/learn/inner_workings/datatypes.mdx index 24f5d87c6b..6de7822201 100644 --- a/learn/inner_workings/datatypes.mdx +++ b/learn/inner_workings/datatypes.mdx @@ -12,14 +12,31 @@ String tokenization is the process of **splitting a string into a list of indivi A string is passed to a tokenizer and is then broken into separate string tokens. A token is a **word**. -- For Latin-based languages, the words are separated by **space**. -- For Kanji characters, the words are separated by **character**. +### Tokenization -For Latin-based languages, there are two kinds of **space separators**: +Tokenization relies on two main processes to identifying words and separating them into tokens: separators and dictionaries. + +#### Separators + +Separators are characters that indicate where one word ends and another word begins. In languages using the Latin alphabet, for example, words are usually delimited by white space. In Japanese, word boundaries are more commonly indicated in other ways, such as appending particles like `に` and `で` to the end of a word. + +There are two kinds of separators in Meilisearch: soft and hard. Hard separators signal a significant context switch such as a new sentence or paragraph. Soft separators only delimit one word from another but do not imply a major change of subject. + +The list below presents some of the most common separators in languages using the Latin alphabet: - **Soft spaces** (distance: 1): whitespaces, quotes, `'-' | '_' | '\'' | ':' | '/' | '\\' | '@' | '"' | '+' | '~' | '=' | '^' | '*' | '#'` - **Hard spaces** (distance: 8): `'.' | ';' | ',' | '!' | '?' | '(' | ')' | '[' | ']' | '{' | '}'| '|'` +For more separators, including those used in other writing systems like Cyrillic and Thai, [consult this exhaustive list](https://docs.rs/charabia/0.8.3/src/charabia/separators.rs.html#16-62). + +#### Dictionaries + +For the tokenization process, dictionaries are lists of groups of characters which should be considered as single term. Dictionaries are particularly useful when identifying words in languages like Japanese, where words are not always marked by separator tokens. + +Meilisearch comes with a number of general-use dictionaries for its officially supported languages. When working with documents containing many domain-specific terms, such as a legal documents or academic papers, providing a [custom dictionary](/reference/api/settings#dictionary) may improve search result relevancy. + +### Distance + Distance plays an essential role in determining whether documents are relevant since [one of the ranking rules is the **proximity** rule](/learn/core_concepts/relevancy). The proximity rule sorts the results by increasing distance between matched query terms. Then, two words separated by a soft space are closer and thus considered **more relevant** than two words separated by a hard space. After the tokenizing process, each word is indexed and stored in the global dictionary of the corresponding index. diff --git a/learn/what_is_meilisearch/telemetry.mdx b/learn/what_is_meilisearch/telemetry.mdx index d29c4a7e68..f6fa9b3b30 100644 --- a/learn/what_is_meilisearch/telemetry.mdx +++ b/learn/what_is_meilisearch/telemetry.mdx @@ -197,6 +197,9 @@ This list is liable to change with every new version of Meilisearch. It's not be | `displayed_attributes.total` | Number of displayed attributes | 3 | `displayed_attributes.with_wildcard` | `true` if `*` is specified as a displayed attribute, otherwise `false` | false | `stop_words.total` | Number of stop words | 3 +| `separator_tokens.total` | Number of separator tokens | 3 +| `non_separator_tokens.total` | Number of non-separator tokens | 3 +| `dictionary.total` | Number of words in the dictionary | 3 | `synonyms.total` | Number of synonyms | 3 | `per_index_uid` | `true` if the `uid` is used to fetch an index stat resource, otherwise `false` | false | `searches.avg_search_count` | The average number of search queries received per call for the aggregated event | 4.2 diff --git a/package.json b/package.json index fce9fae7ee..c32d0a5f52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "documentation", - "version": "1.3.0", + "version": "1.4.0", "description": "", "main": "index.js", "dependencies": {}, diff --git a/reference/api/settings.mdx b/reference/api/settings.mdx index 81b85ab3a6..23a7083b79 100644 --- a/reference/api/settings.mdx +++ b/reference/api/settings.mdx @@ -32,6 +32,9 @@ By default, the settings object looks like this. All fields are modifiable. "exactness" ], "stopWords": [], + "nonSeparatorTokens": [], + "separatorTokens": [], + "dictionary": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": { @@ -94,6 +97,9 @@ Get the settings of an index. "exactness" ], "stopWords": [], + "nonSeparatorTokens": [], + "separatorTokens": [], + "dictionary": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": { @@ -136,13 +142,16 @@ If the provided index does not exist, it will be created. | Name | Type | Default value | Description | | :--------------------------------------------------- | :--------------- | :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- | +| **[`dictionary`](#dictionary)** | Array of strings | Empty | List of strings Meilisearch should parse as a single term | | **[`displayedAttributes`](#displayed-attributes)** | Array of strings | All attributes: `["*"]` | Fields displayed in the returned documents | | **[`distinctAttribute`](#distinct-attribute)** | String | `null` | Search returns documents with distinct (different) values of the given field | | **[`faceting`](#faceting)** | Object | [Default object](#faceting-object) | Faceting settings | | **[`filterableAttributes`](#filterable-attributes)** | Array of strings | Empty | Attributes to use as filters and facets | | **[`pagination`](#pagination)** | Object | [Default object](#pagination-object) | Pagination settings | -| **[`rankingRules`](#ranking-rules)** | Array of strings | `["words",`
`"typo",`
`"proximity",`
`"attribute",`
`"sort",`
`"exactness"]` | List of ranking rules in order of importance | +| **[`rankingRules`](#ranking-rules)** | Array of strings | `["words",`
`"typo",`
`"proximity",`
`"attribute",`
`"sort",`
`"exactness"]` | List of ranking rules in order of importance | | **[`searchableAttributes`](#searchable-attributes)** | Array of strings | All attributes: `["*"]` | Fields in which to search for matching query words sorted by order of importance | +| **[`separatorTokens`](#separator-tokens)** | Array of strings | Empty | List of characters delimiting where one term begins and ends | +| **[`noSeparatorTokens`](#non-separator-tokens)** | Array of strings | Empty | List of characters not delimiting where one term begins and ends | | **[`sortableAttributes`](#sortable-attributes)** | Array of strings | Empty | Attributes to use when sorting search results | | **[`stopWords`](#stop-words)** | Array of strings | Empty | List of words ignored by Meilisearch when present in search queries | | **[`synonyms`](#synonyms)** | Object | Empty | List of associated words treated similarly | @@ -200,6 +209,114 @@ Reset all the settings of an index to their [default value](#settings-object). You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). +## Dictionary + +Allows users to instruct Meilisearch to consider groups of strings as a single term by adding a supplementary dictionary of user-defined terms. + +This is particularly useful when working with datasets containing many domain-specific words, and in languages where words are not separated by whitespace such as Japanese. + +Custom dictionaries are also useful in a few use-cases for space-separated languages, such as datasets with names such as `"J. R. R. Tolkien"` and `"W. E. B. Du Bois"`. + + +User-defined dictionaries can be used together with synonyms. It can be useful to configure Meilisearch so different spellings of an author's initials return the same results: + +```json +"dictionary": ["W. E. B.", "W.E.B."], +"synonyms": { + "W. E. B.": ["W.E.B."], + "W.E.B.": ["W. E. B."] +} +``` + + +### Get dictionary + + + +Get an index's user-defined dictionary. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Example + + + +##### Response: `200 OK` + +```json +[] +``` + +### Update dictionary + + + +Update an index's user-defined dictionary. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Body + +```json +["J. R. R.", "W. E. B."] +``` + +#### Example + + + +##### Response: `202 Accepted` + +```json +{ + "taskUid": 1, + "indexUid": "books", + "status": "enqueued", + "type": "settingsUpdate", + "enqueuedAt": "2023-09-11T15:39:06.073314Z" +} +``` + +Use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). + +### Reset dictionary + + + +Reset an index's dictionary to its default value, `[]`. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Example + + + +##### Response: `202 Accepted` + +```json +{ + "taskUid": 1, + "indexUid": "books", + "status": "enqueued", + "type": "settingsUpdate", + "enqueuedAt": "2022-04-14T20:53:32.863107Z" +} +``` + +Use the returned `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). + ## Displayed attributes The attributes added to the `displayedAttributes` list appear in search results. `displayedAttributes` only affects the search endpoints. It has no impact on the [get documents with POST](/reference/api/documents#get-documents-with-post) and [get documents with GET](/reference/api/documents#get-documents-with-get) endpoints. @@ -1033,6 +1150,196 @@ Reset the searchable attributes of the index to the default value. You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). +## Separator tokens + +Configure strings as custom separator tokens indicating where a word ends and begins. + +Tokens in the `separatorTokens` list are added on top of [Meilisearch's default list of separators](/learn/advanced/datatypes#string). To remove separators from the default list, use [the `nonSeparatorTokens` setting](#non-separator-tokens). + +### Get separator tokens + + + +Get an index's list of custom separator tokens. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Example + + + +##### Response: `200 Ok` + +```json +[] +``` + +### Update separator tokens + + + +Update an index's list of custom separator tokens. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Body + +``` +["|", "…"] +``` + +An array of strings, with each string indicating a word separator. + +#### Example + + + +##### Response: `202 Accepted` + +```json +{ + "taskUid": 1, + "indexUid": "movies", + "status": "enqueued", + "type": "settingsUpdate", + "enqueuedAt": "2021-08-11T09:25:53.000000Z" +} +``` + +Use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). + +### Reset separator tokens + + + +Reset an index's list of custom separator tokens to its default value, `[]`. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Example + + + +##### Response: `202 Accepted` + +```json +{ + "taskUid": 1, + "indexUid": "movies", + "status": "enqueued", + "type": "settingsUpdate", + "enqueuedAt": "2021-08-11T09:25:53.000000Z" +} +``` + +Use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). + +## Non-separator tokens + +Remove tokens from Meilisearch's default [list of word separators](/learn/advanced/datatypes#string). + +### Get non-separator tokens + + + +Get an index's list of non-separator tokens. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Example + + + +##### Response: `200 Ok` + +```json +[] +``` + +### Update non-separator tokens + + + +Update an index's list of non-separator tokens. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Body + +``` +["@", "#"] +``` + +An array of strings, with each string indicating a token present in [list of word separators](/learn/advanced/datatypes#string). + +#### Example + + + +##### Response: `202 Accepted` + +```json +{ + "taskUid": 1, + "indexUid": "movies", + "status": "enqueued", + "type": "settingsUpdate", + "enqueuedAt": "2021-08-11T09:25:53.000000Z" +} +``` + +Use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). + +### Reset non-separator tokens + + + +Reset an index's list of non-separator tokens to its default value, `[]`. + +#### Path parameters + +| Name | Type | Description | +| :---------------- | :----- | :------------------------------------------------------------------------ | +| **`index_uid`** * | String | [`uid`](/learn/core_concepts/indexes#index-uid) of the requested index | + +#### Example + + + +##### Response: `202 Accepted` + +```json +{ + "taskUid": 1, + "indexUid": "movies", + "status": "enqueued", + "type": "settingsUpdate", + "enqueuedAt": "2021-08-11T09:25:53.000000Z" +} +``` + +Use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task). + ## Sortable attributes Attributes that can be used when sorting search results using the [`sort` search parameter](/reference/api/search#sort).