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