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];
toSort.sort((a, b) => { if (index === "g") {
const aDist = levenOverVars(a[index], searchI); toSort.sort((a, b) => {
const bDist = levenOverVars(b[index], searchI); const aDist = levenOverVars(a[index], searchI);
return aDist - bDist; 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; return toSort;
} }