Releases: meilisearch/meilisearch-js
v0.47.0 🌻
This version introduces features released on Meilisearch v1.12.0 🎉
Check out the Meilisearch v1.12.0 changelog for more information.
🚀 Enhancements
- Addition: #1775
Introducing new methods to get one or several batches, respectively getBatch()
and getBatches()
.
// fetch one batch using batch UID
const batch = await client.getBatch(123)
// fetch all batches
const batches = await client.getBatches()
- Addition: #1774
The getTasks()
methods now accept a reverse
parameter to retrieve tasks in reverse chronological order.
const tasks = await client.getTasks({ reverse: true });
- Addition: #1790
Index settings now allow disabling prefix search and facet search. They're both enabled by default. The SDK now comes with dedicated methods to configure these settings.
// disable prefix search
await client.index('myIndex').updatePrefixSearch('disabled')
// reset prefix search settings
await client.index('myIndex').resetPrefixSearch()
// disable facet search
await client.index('myIndex').updateFacetSearch(false)
// reset facet search settings
await client.index('myIndex').resetFacetSearch()
- Update: #1773
The _matchesPosition
array now contains an indices
array the text was matched in an array.
When searching for fantasy
in a document that has a searchable genre
field with the value genre: ["fantasy", "adventure"]
, the matches position will be as follow:
{
genre: [{ start: 0, length: 7, indices: [0] }]
}
Which means:
- There was a single match in the
genre
array (array length == 1) - The match started as position
0
(the first character, "f") - The match has a length of
7
(the entire "fantasy" word) - The match was in the first item of the array (indices == [0])
⚙️ Maintenance/misc
- Update CONTRIBUTING.md with minimal Node version (#1788)
Thanks again to @Barabasbalazs, @mdubus, @irevoire, @curquiza, and @Strift. 🎉
v0.46.0 🌻
⚠️ Breaking changes
Old:
import { MeiliSearch } from "meilisearch";
const client = new MeiliSearch({ host: "http://127.0.0.1:7700", apiKey: "masterKey" });
const token = await client.generateTenantToken("e489fe16-3381-431b-bee3-00430192915d");
// ...
New:
import { generateTenantToken } from "meilisearch/token";
const token = await generateTenantToken("e489fe16-3381-431b-bee3-00430192915d", [], { apiKey: "masterKey" });
// ...
🐛 Bug Fixes
- fix: pull the latest in the CI instead of forcing the v1.11 (#1751) @mdubus
- Updated Type definition for multiSearch return types for better TS support (#1776) @Barabasbalazs
🔒 Security
- build(deps): bump @eslint/plugin-kit from 0.2.0 to 0.2.3 (#1763)
- build(deps): bump cross-spawn from 6.0.5 to 6.0.6 in /playgrounds/javascript (#1766)
Thanks again to @Barabasbalazs, @flevi29, @mdubus! 🎉
v0.45.0 🌻
This version introduces features released on Meilisearch v1.11.0 🎉
Check out the changelog of Meilisearch v1.11.0 for more information on the changes.
⚠️ Breaking changes (experimental feature only)
- Adapt the library to the new usage of the Hybrid search and
embedder
settings in Meilisearch v1.11 (#1715) @mdubus
🚀 Enhancements
⚙️ Maintenance/misc
- Remove eslint vitest exceptions (#1748) @Barabasbalazs
Thanks again to @Barabasbalazs, @brunoocasali, @curquiza, @mdubus! 🎉
v0.44.1 🌻
v0.44.0 🌻
⚠️ Breaking changes
- Add
package.json
"exports"
field (#1611) @flevi29
Could be a breaking change for anyone who was importing anything other than what we have in the "exports" package.json field.
⚙️ Maintenance/misc
- Switch test runner from Jest to Vitest (#1694) @flevi29
- Update wrong rollup terser dependency (#1725) @flevi29
Thanks again to @flevi29, @meili-bors[bot] ! 🎉
v0.43.0 🌻
⚠️ Breaking changes
🔒 Security
- build(deps): bump elliptic from 6.5.4 to 6.5.7 in /playgrounds/javascript (#1699)
- build(deps): bump serve-static from 1.14.1 to 1.16.2 in /playgrounds/javascript (#1700)
⚙️ Maintenance/misc
- Add
"packageManager"
entry to package.json (#1698) @flevi29 - Remove
.editorconfig
(#1696) @flevi29 - Update check-release.sh following format (#1733) @curquiza
Thanks again to @brunoocasali, @curquiza, @flevi29, @meili-bors[bot] ! 🎉
v0.42.0 🌻
This version introduces features released on Meilisearch v1.10.0 🎉
Check out the changelog of Meilisearch v1.10.0 for more information on the changes.
⚠️ Breaking changes
- Improve errors (#1656) @/flevi29
More details here - Changes related to Hybrid search (experimental) for the REST embedder (#1692) @mdubus
- Removed parameters:
query
,inputField
,inputType
,pathToEmbeddings
andembeddingObject
. - Replaced by
request
andresponse
- New parameter:
headers
- Removed parameters:
🚀 Enhancements
-
Hybrid search improvements (#1692) @mdubus
- Add
url
parameter to the OpenAI embedder dimensions
is now available as an optional parameter forollama
embedders.
- Add
client.multiSearch({
federation: {},
queries: [
{
indexUid: 'movies',
q: 'batman',
limit: 5,
},
{
indexUid: 'comics',
q: 'batman',
limit: 5,
},
]
})
index.updateDocumentsByFunction({
context: { ctx: 'Harry' },
filter: 'id = 4',
function: 'doc.comment = `Yer a wizard, ${context.ctx}!`',
})
)
- Add language settings (#1693) @/flevi29
client.index('INDEX_NAME').updateLocalizedAttributes([
{ attributePatterns: ['jpn'], locales: ['*_ja'] },
];)
client.index('INDEX_NAME').search('進撃の巨人', { locales: ['jpn'] })
⚙️ Maintenance/misc
Thanks again to @amit-ksh, @brunoocasali, @curquiza, @flevi29, @mdubus, @meili-bors[bot] ! 🎉
v0.41.0 🌻
This version introduces features released on Meilisearch v1.9.0 🎉
Check out the changelog of Meilisearch v1.9.0 for more information on the changes.
🚀 Enhancements
- Add frequency matching strategy (#1670) @the-sinner
client.index('movies').search('interstellar', { matchingStrategy: MatchingStrategies.FREQUENCY });
- Add
rankingScoreThreshold
insearch
(#1669) @the-sinner and insearchGet
(#1673) @mdubus
client.index('movies').search('badman', { rankingScoreThreshold: 0.2 });
client.index('movies').searchGet('badman', { rankingScoreThreshold: 0.2 });
client.index('movies').search('', { distinct: 'genre' });
client.index('movies').searchSimilarDocuments({ id: 'target-document-id' });
client.index('movies').getDocuments({ retrieveVectors: true });
🔒 Security
- build(deps): bump ws from 5.2.3 to 5.2.4 in /playgrounds/javascript (#1672)
⚙️ Maintenance/misc
- Remove unneeded comments from config files (#1657) @flevi29
- Fix release version check script (#1681) @curquiza
Thanks again to @brunoocasali, @curquiza, @flevi29, @mdubus, and @the-sinner! 🎉
v0.40.0 🌻
💥 Breaking Changes
- Fix the issue introduced in the v0.39 that affected vite apps #1652 @brunoocasali
- Now to use the
generateTenantToken
you should use it withawait
:
before:after:const token = client.generateTenantToken(apiKeyUid, searchRules, { apiKey: apiKey, expiresAt: expiresAt, })
const token = await client.generateTenantToken(apiKeyUid, searchRules, { apiKey: apiKey, expiresAt: expiresAt, })
⚙️ Maintenance/misc
Thanks again to @brunoocasali, @mdubus! 🎉
v0.39.0 🌻
🚀 Enhancements
- feat: hybrid search improvements for v1.8.x (#1647) @mdubus
- Add
null
to Embedder type (#1646) @amit-ksh - Add searchCutoffMs index setting (#1643, #1645) @amit-ksh
client.index('movies').getSearchCutoffMs() client.index('movies').updateSearchCutoffMs(150) client.index('movies').resetSearchCutoffMs()
export default defineConfig({
plugins: [vue()],
build: {
rollupOptions: {
external: ['crypto'], // this is the important part
},
},
})
Otherwise, you'll face errors like Module "crypto" has been externalized for browser compatibility
.
⚙️ Maintenance/misc
- Update ESLint, Prettier, TypeScript and fix/improve their configuration files (#1616) @flevi29
- Fix code style after configuration changes (#1638) @brunoocasali
Thanks again to @amit-ksh, @brunoocasali, @curquiza, @flevi29, @mdubus! 🎉