diff --git a/server/src/queries/search.repository.sql b/server/src/queries/search.repository.sql index 2d5da4d381112..72e8a6941d362 100644 --- a/server/src/queries/search.repository.sql +++ b/server/src/queries/search.repository.sql @@ -36,7 +36,7 @@ offset and "assets"."deletedAt" is null and "assets"."id" < $6 order by - "assets"."id" + random() limit $7 ) @@ -56,7 +56,7 @@ union all and "assets"."deletedAt" is null and "assets"."id" > $13 order by - "assets"."id" + random() limit $14 ) diff --git a/server/src/repositories/search.repository.ts b/server/src/repositories/search.repository.ts index a309f76e012ff..76b6653e3d73e 100644 --- a/server/src/repositories/search.repository.ts +++ b/server/src/repositories/search.repository.ts @@ -72,8 +72,14 @@ export class SearchRepository implements ISearchRepository { async searchRandom(size: number, options: AssetSearchOptions): Promise { const uuid = randomUUID(); const builder = searchAssetBuilder(this.db, options); - const lessThan = builder.where('assets.id', '<', uuid).orderBy('assets.id').limit(size); - const greaterThan = builder.where('assets.id', '>', uuid).orderBy('assets.id').limit(size); + const lessThan = builder + .where('assets.id', '<', uuid) + .orderBy(sql`random()`) + .limit(size); + const greaterThan = builder + .where('assets.id', '>', uuid) + .orderBy(sql`random()`) + .limit(size); const { rows } = await sql`${lessThan} union all ${greaterThan} limit ${size}`.execute(this.db); return rows as any as AssetEntity[]; }