diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-30 15:44:17 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-03-30 15:44:17 +0000 |
| commit | 853ed13450b3a0d92cba144cc0dfd0696e7c810c (patch) | |
| tree | 7e654b5d32e7c4b8e69091c48dcab89eb7b50bad /packages/trpc | |
| parent | e99dee0b4f7220568c8ffa2755147bc45d35b32b (diff) | |
| download | karakeep-853ed13450b3a0d92cba144cc0dfd0696e7c810c.tar.zst | |
fix: Sort search results by relevance
Diffstat (limited to 'packages/trpc')
| -rw-r--r-- | packages/trpc/routers/bookmarks.ts | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts index bcf200a3..4fb29c4c 100644 --- a/packages/trpc/routers/bookmarks.ts +++ b/packages/trpc/routers/bookmarks.ts @@ -361,11 +361,18 @@ export const bookmarksAppRouter = router({ } const resp = await client.search(input.text, { filter: [`userId = '${ctx.user.id}'`], + showRankingScore: true, + attributesToRetrieve: ["id"], + sort: ["createdAt:desc"], }); if (resp.hits.length == 0) { return { bookmarks: [], nextCursor: null }; } + const idToRank = resp.hits.reduce<Record<string, number>>((acc, r) => { + acc[r.id] = r._rankingScore!; + return acc; + }, {}); const results = await ctx.db.query.bookmarks.findMany({ where: and( eq(bookmarks.userId, ctx.user.id), @@ -385,6 +392,7 @@ export const bookmarksAppRouter = router({ asset: true, }, }); + results.sort((a, b) => idToRank[b.id] - idToRank[a.id]); return { bookmarks: results.map(toZodSchema), nextCursor: null }; }), |
