Skip to content

Commit 72a0346

Browse files
meili-bors[bot]Strift
andauthored
Merge #1318
1318: feat(instant-meilisearch): add ranking score threshold r=brunoocasali a=Strift ## Related issue Fixes #1315 ## What does this PR do? features: - add `rankingScoreThreshold` to the search parameters - update `README.md` to list the new search parameter - sort search parameters alphabetically (in the readme & the code) maintenance: - add `.nvmrc` to pin node version - pin package manager in `package.json` ## PR checklist Please check if your PR fulfills the following requirements: - [x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)? - [x] Have you read the contributing guidelines? - [x] Have you made sure that the title is accurate and descriptive of the changes? Thank you so much for contributing to Meilisearch! Co-authored-by: Strift <[email protected]>
2 parents d9b427a + f6649aa commit 72a0346

File tree

7 files changed

+47
-18
lines changed

7 files changed

+47
-18
lines changed

.changeset/chatty-hounds-try.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@meilisearch/instant-meilisearch": patch
3+
---
4+
5+
Add support for [ranking score threshold](https://www.meilisearch.com/docs/reference/api/search#ranking-score-threshold?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch)

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
v18.20.2

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,6 @@
4343
"dependencies": {
4444
"@changesets/cli": "^2.26.1",
4545
"instantsearch.css": "^8.0.0"
46-
}
46+
},
47+
"packageManager": "[email protected]"
4748
}

packages/instant-meilisearch/README.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -213,18 +213,19 @@ You can use your own HTTP client, for example, with [`axios`](https://github.com
213213

214214
`meiliSearchParams` lets you override a set of search parameters that are sent off to Meilisearch.
215215
The following options can be overridden:
216-
[`attributesToRetrieve`](https://www.meilisearch.com/docs/reference/api/search#attributes-to-retrieve),
217-
[`attributesToCrop`](https://www.meilisearch.com/docs/reference/api/search#attributes-to-crop),
218-
[`cropLength`](https://www.meilisearch.com/docs/reference/api/search#crop-length),
219-
[`cropMarker`](https://www.meilisearch.com/docs/reference/api/search#crop-marker),
220-
[`attributesToHighlight`](https://www.meilisearch.com/docs/reference/api/search#attributes-to-highlight),
221-
[`highlightPreTag`, `highlightPostTag`](https://www.meilisearch.com/docs/reference/api/search#highlight-tags),
222-
[`showMatchesPosition`](https://www.meilisearch.com/docs/reference/api/search#show-matches-position),
223-
[`matchingStrategy`](https://www.meilisearch.com/docs/reference/api/search#matching-strategy),
224-
[`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),
226-
[`hybrid`](https://www.meilisearch.com/docs/learn/experimental/vector_search)
227-
[`distinct`](https://www.meilisearch.com/docs/learn/relevancy/distinct_attribute)
216+
- [`attributesToCrop`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#attributes-to-crop)
217+
- [`attributesToHighlight`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#attributes-to-highlight)
218+
- [`attributesToRetrieve`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#attributes-to-retrieve)
219+
- [`attributesToSearchOn`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#customize-attributes-to-search-on-at-search-time)
220+
- [`cropLength`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#crop-length)
221+
- [`cropMarker`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#crop-marker)
222+
- [`distinct`](https://www.meilisearch.com/docs/learn/relevancy/distinct_attribute)
223+
- [`highlightPreTag`, `highlightPostTag`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#highlight-tags)
224+
- [`hybrid`](https://www.meilisearch.com/docs/learn/experimental/vector_search)
225+
- [`matchingStrategy`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#matching-strategy)
226+
- [`showMatchesPosition`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#show-matches-position)
227+
- [`showRankingScore`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#ranking-score)
228+
- [`rankingScoreThreshold`](https://www.meilisearch.com/docs/reference/api/search?utm_campaign=oss&utm_source=github&utm_medium=instant-meilisearch#ranking-score-threshold)
228229

229230
```js
230231
instantMeiliSearch(

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,19 @@ describe('Parameters adapter', () => {
9595
expect(searchParams.hybrid).toBe(hybridSearchConfig)
9696
})
9797

98+
test('ranking score threshold can be set via search parameters', () => {
99+
const rankingScoreThreshold = 0.974
100+
101+
const searchParams = adaptSearchParams({
102+
...DEFAULT_CONTEXT,
103+
meiliSearchParams: {
104+
rankingScoreThreshold,
105+
},
106+
})
107+
108+
expect(searchParams.rankingScoreThreshold).toBe(rankingScoreThreshold)
109+
})
110+
98111
test('distinct search configuration can be set via search parameters', () => {
99112
const distinctSearchConfig = 'title'
100113

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
@@ -244,6 +244,12 @@ export function MeiliParamsCreator(searchContext: SearchContext) {
244244
meiliSearchParams.distinct = value
245245
}
246246
},
247+
addRankingScoreThreshold() {
248+
const value = overrideParams?.rankingScoreThreshold
249+
if (value !== undefined) {
250+
meiliSearchParams.rankingScoreThreshold = value
251+
}
252+
},
247253
}
248254
}
249255

@@ -277,6 +283,7 @@ export function adaptSearchParams(
277283
meilisearchParams.addAttributesToSearchOn()
278284
meilisearchParams.addHybridSearch()
279285
meilisearchParams.addDistinct()
286+
meilisearchParams.addRankingScoreThreshold()
280287

281288
return meilisearchParams.getParams()
282289
}

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,20 @@ export type InstantSearchParams = NonNullable<
4343

4444
export type OverridableMeiliSearchSearchParameters = Pick<
4545
MeiliSearchMultiSearchParams,
46-
| 'attributesToRetrieve'
4746
| 'attributesToCrop'
47+
| 'attributesToRetrieve'
48+
| 'attributesToSearchOn'
4849
| 'cropLength'
4950
| 'cropMarker'
5051
| 'attributesToHighlight'
52+
| 'distinct'
5153
| 'highlightPreTag'
5254
| 'highlightPostTag'
53-
| 'showMatchesPosition'
55+
| 'hybrid'
5456
| 'matchingStrategy'
57+
| 'rankingScoreThreshold'
58+
| 'showMatchesPosition'
5559
| 'showRankingScore'
56-
| 'attributesToSearchOn'
57-
| 'hybrid'
58-
| 'distinct'
5960
>
6061

6162
type BaseInstantMeiliSearchOptions = {

0 commit comments

Comments
 (0)