diff options
| author | xuatz <xzlow10@gmail.com> | 2025-05-18 17:21:11 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-18 09:21:11 +0100 |
| commit | dbd0fd197323f2a83fab384d7b4b116a02165d16 (patch) | |
| tree | 2bd3c34bd7088b32ae7f0e33910d54b73a620366 /packages/trpc/routers | |
| parent | f338f7b102e538889e4f16fac407f4d5f17fdf69 (diff) | |
| download | karakeep-dbd0fd197323f2a83fab384d7b4b116a02165d16.tar.zst | |
fix(search): add new relevance sort order (#1392)
* fix(search): add new relevance sort order
* address pr comments
* some minor fixes
---------
Co-authored-by: Mohamed Bassem <me@mbassem.com>
Diffstat (limited to 'packages/trpc/routers')
| -rw-r--r-- | packages/trpc/routers/bookmarks.ts | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts index b9a21400..88386657 100644 --- a/packages/trpc/routers/bookmarks.ts +++ b/packages/trpc/routers/bookmarks.ts @@ -712,7 +712,7 @@ export const bookmarksAppRouter = router({ if (!input.limit) { input.limit = DEFAULT_NUM_BOOKMARKS_PER_PAGE; } - const sortOrder = input.sortOrder || "desc"; + const sortOrder = input.sortOrder || "relevance"; const client = await getSearchIdxClient(); if (!client) { throw new TRPCError({ @@ -735,11 +735,16 @@ export const bookmarksAppRouter = router({ filter = [`userId = '${ctx.user.id}'`]; } + /** + * preserve legacy behaviour + */ + const createdAtSortOrder = sortOrder === "relevance" ? "desc" : sortOrder; + const resp = await client.search(parsedQuery.text, { filter, showRankingScore: true, attributesToRetrieve: ["id"], - sort: [`createdAt:${sortOrder}`], + sort: [`createdAt:${createdAtSortOrder}`], limit: input.limit, ...(input.cursor ? { @@ -775,7 +780,18 @@ export const bookmarksAppRouter = router({ assets: true, }, }); - results.sort((a, b) => idToRank[b.id] - idToRank[a.id]); + + switch (true) { + case sortOrder === "relevance": + results.sort((a, b) => idToRank[b.id] - idToRank[a.id]); + break; + case sortOrder === "desc": + results.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime()); + break; + case sortOrder === "asc": + results.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime()); + break; + } return { bookmarks: results.map((b) => toZodSchema(b, input.includeContent)), |
