improved use of levenstein for relevancy sorting
This commit is contained in:
parent
d8119a1475
commit
4e5c23cefd
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue