Skip to content

Commit 41830c7

Browse files
authored
Merge pull request #1285 from meilisearch/enable-hybrid-search
InstantMeilisearch: Enable hybrid search
2 parents ee10f9d + a2f3192 commit 41830c7

File tree

6 files changed

+33
-1
lines changed

6 files changed

+33
-1
lines changed

.changeset/fluffy-waves-love.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@meilisearch/instant-meilisearch": minor
3+
---
4+
5+
Enable experimental hybrid search

packages/instant-meilisearch/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ The following options can be overridden:
222222
[`showMatchesPosition`](https://www.meilisearch.com/docs/reference/api/search#show-matches-position),
223223
[`matchingStrategy`](https://www.meilisearch.com/docs/reference/api/search#matching-strategy),
224224
[`showRankingScore`](https://www.meilisearch.com/docs/reference/api/search#ranking-score),
225-
[`attributesToSearchOn`](https://www.meilisearch.com/docs/reference/api/search#customize-attributes-to-search-on-at-search-time).
225+
[`attributesToSearchOn`](https://www.meilisearch.com/docs/reference/api/search#customize-attributes-to-search-on-at-search-time),
226+
[`hybrid`](https://www.meilisearch.com/docs/learn/experimental/vector_search)
226227

227228
```js
228229
instantMeiliSearch(

packages/instant-meilisearch/src/adapter/search-request-adapter/__tests__/search-params.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,22 @@ describe('Parameters adapter', () => {
7878
meiliSearchParams.matchingStrategy
7979
)
8080
})
81+
82+
test('hybrid search configuration can be set via search parameters', () => {
83+
const hybridSearchConfig = {
84+
semanticRatio: 0,
85+
embedder: 'default',
86+
}
87+
88+
const searchParams = adaptSearchParams({
89+
...DEFAULT_CONTEXT,
90+
meiliSearchParams: {
91+
hybrid: hybridSearchConfig,
92+
},
93+
})
94+
95+
expect(searchParams.hybrid).toBe(hybridSearchConfig)
96+
})
8197
})
8298

8399
describe('Geo filter adapter', () => {

packages/instant-meilisearch/src/adapter/search-request-adapter/search-params-adapter.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ export function MeiliParamsCreator(searchContext: SearchContext) {
232232
meiliSearchParams.attributesToSearchOn = value
233233
}
234234
},
235+
addHybridSearch() {
236+
const value = overrideParams?.hybrid
237+
if (value !== undefined) {
238+
meiliSearchParams.hybrid = value
239+
}
240+
},
235241
}
236242
}
237243

@@ -263,6 +269,7 @@ export function adaptSearchParams(
263269
meilisearchParams.addMatchingStrategy()
264270
meilisearchParams.addShowRankingScore()
265271
meilisearchParams.addAttributesToSearchOn()
272+
meilisearchParams.addHybridSearch()
266273

267274
return meilisearchParams.getParams()
268275
}

packages/instant-meilisearch/src/client/instant-meilisearch-client.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,11 @@ export function instantMeiliSearch(
7979
const instantMeilisearchConfig = getInstantMeilisearchConfig(
8080
instantMeiliSearchOptions
8181
)
82+
8283
return {
8384
setMeiliSearchParams: (params): void => {
8485
const { meiliSearchParams } = instantMeiliSearchOptions
86+
8587
instantMeiliSearchOptions.meiliSearchParams =
8688
meiliSearchParams === undefined
8789
? params

packages/instant-meilisearch/src/types/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export type OverridableMeiliSearchSearchParameters = Pick<
5353
| 'matchingStrategy'
5454
| 'showRankingScore'
5555
| 'attributesToSearchOn'
56+
| 'hybrid'
5657
>
5758

5859
type BaseInstantMeiliSearchOptions = {

0 commit comments

Comments
 (0)