improved use of levenstein for relevancy sorting

This commit is contained in:
adueck 2023-08-14 13:48:50 +04:00
parent d8119a1475
commit 4e5c23cefd
1 changed files with 28 additions and 5 deletions

View File

@ -399,6 +399,9 @@ function sortByRelevancy<T extends Record<"p" | "g", string>>(
: 0;
}
function levenOverVars(g: string, s: string): number {
if (!g.includes(",")) {
return levenshtein(g, s, insert, remove, update).distance;
}
return Math.min(
...g
.split(",")
@ -407,11 +410,31 @@ function sortByRelevancy<T extends Record<"p" | "g", string>>(
}
const toSort = [...arr];
toSort.sort((a, b) => {
const aDist = levenOverVars(a[index], searchI);
const bDist = levenOverVars(b[index], searchI);
return aDist - bDist;
});
if (index === "g") {
toSort.sort((a, b) => {
const aDist = levenOverVars(a[index], searchI);
const bDist = levenOverVars(b[index], searchI);
return aDist - bDist;
});
} else {
toSort.sort((a, b) => {
const aDist = levenshtein(
a[index],
searchI,
insert,
remove,
update
).distance;
const bDist = levenshtein(
b[index],
searchI,
insert,
remove,
update
).distance;
return aDist - bDist;
});
}
return toSort;
}