Skip to content

Commit

Permalink
fix(search): second sort by identifier relevence
Browse files Browse the repository at this point in the history
  • Loading branch information
aleksasiriski committed Dec 29, 2024
1 parent ab21d8b commit d2123e3
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
18 changes: 13 additions & 5 deletions src/lib/server/db/employee.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ export async function getEmployees(
entryBuilding: employeeEntry.building,
exitTimestamp: max(employeeExit.timestamp),
leastDistance: sqlLeast([
sqlLevenshteinDistance(sqlConcat([employee.identifier], ' '), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([employee.fname], ' '), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([employee.lname], ' '), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([employee.identifier]), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([employee.fname]), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([employee.lname]), nonEmptySearchQuery),
sqlLevenshteinDistance(
sqlConcat([employee.fname, employee.lname], ' '),
nonEmptySearchQuery
Expand All @@ -70,7 +70,11 @@ export async function getEmployees(
sqlConcat([employee.lname, employee.fname], ' '),
nonEmptySearchQuery
)
]).as('least_distance')
]).as('least_distance'),
leastDistanceIdentifier: sqlLevenshteinDistance(
sqlConcat([employee.identifier]),
nonEmptySearchQuery
).as('least_distance_identifier')
})
.from(employee)
.leftJoin(maxEntrySubquery, eq(maxEntrySubquery.employeeId, employee.id))
Expand Down Expand Up @@ -108,7 +112,11 @@ export async function getEmployees(
maxEntrySubquery.maxEntryTimestamp,
employeeEntry.building
)
.orderBy(({ leastDistance, identifier }) => [leastDistance, identifier])
.orderBy(({ leastDistance, leastDistanceIdentifier, identifier }) => [
leastDistance,
leastDistanceIdentifier,
identifier
])
.limit(limit)
.offset(offset)
: await db
Expand Down
18 changes: 13 additions & 5 deletions src/lib/server/db/student.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ export async function getStudents(
entryBuilding: studentEntry.building,
exitTimestamp: max(studentExit.timestamp),
leastDistance: sqlLeast([
sqlLevenshteinDistance(sqlConcat([student.index], ' '), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([student.fname], ' '), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([student.lname], ' '), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([student.index]), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([student.fname]), nonEmptySearchQuery),
sqlLevenshteinDistance(sqlConcat([student.lname]), nonEmptySearchQuery),
sqlLevenshteinDistance(
sqlConcat([student.fname, student.lname], ' '),
nonEmptySearchQuery
Expand All @@ -70,7 +70,11 @@ export async function getStudents(
sqlConcat([student.lname, student.fname], ' '),
nonEmptySearchQuery
)
]).as('least_distance')
]).as('least_distance'),
leastDistanceIdentifier: sqlLevenshteinDistance(
sqlConcat([student.index]),
nonEmptySearchQuery
).as('least_distance_identifier')
})
.from(student)
.leftJoin(maxEntrySubquery, eq(maxEntrySubquery.studentId, student.id))
Expand Down Expand Up @@ -106,7 +110,11 @@ export async function getStudents(
maxEntrySubquery.maxEntryTimestamp,
studentEntry.building
)
.orderBy(({ leastDistance, index }) => [leastDistance, index])
.orderBy(({ leastDistance, leastDistanceIdentifier, index }) => [
leastDistance,
leastDistanceIdentifier,
index
])
.limit(limit)
.offset(offset)
: await db
Expand Down

0 comments on commit d2123e3

Please sign in to comment.