Overview
| Comment: | [graphspell] string comparison: use Jaro-Winkler |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | graphspell | bdic_opt |
| Files: | files | file ages | folders |
| SHA3-256: |
efebe44d15ccf196b770a0cc8d300493 |
| User & Date: | olr on 2020-09-14 14:38:47 |
| Other Links: | branch diff | manifest | tags |
Context
|
2020-09-15
| ||
| 13:50 | [graphspell][js] suggest optimisation with Jaro-Winkler (thanks to IllusionPerdu) check-in: 3b3a02f4d3 user: olr tags: graphspell, bdic_opt | |
|
2020-09-14
| ||
| 14:38 | [graphspell] string comparison: use Jaro-Winkler check-in: efebe44d15 user: olr tags: graphspell, bdic_opt | |
| 13:30 | [fx] gce_worker: tests for spell suggestions check-in: d8a0d45bc9 user: olr tags: fx, bdic_opt | |
Changes
Modified graphspell-js/ibdawg.js from [8da6e7122c] to [1cb5337715].
| ︙ | ︙ | |||
35 36 37 38 39 40 41 |
addSugg (sSugg, nDeep=0) {
// add a suggestion
if (this.aAllSugg.has(sSugg)) {
return;
}
this.aAllSugg.add(sSugg);
if (!this.aSugg.has(sSugg)) {
| | > | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
addSugg (sSugg, nDeep=0) {
// add a suggestion
if (this.aAllSugg.has(sSugg)) {
return;
}
this.aAllSugg.add(sSugg);
if (!this.aSugg.has(sSugg)) {
//let nDist = Math.floor(str_transform.distanceDamerauLevenshtein(this.sSimplifiedWord, str_transform.simplifyWord(sSugg)));
let nDist = Math.floor((1 - str_transform.distanceJaroWinkler(this.sSimplifiedWord, str_transform.simplifyWord(sSugg)))*10);
if (nDist <= this.nDistLimit) {
if (sSugg.includes(" ")) { // add 1 to distance for split suggestions
nDist += 1;
}
if (!this.dSugg.has(nDist)) {
this.dSugg.set(nDist, []);
}
|
| ︙ | ︙ | |||
62 63 64 65 66 67 68 |
let lRes = [];
let bFirstListSorted = false;
for (let [nDist, lSugg] of this.dSugg.entries()) {
if (nDist > this.nDistLimit) {
break;
}
if (!bFirstListSorted && lSugg.length > 1) {
| | > | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
let lRes = [];
let bFirstListSorted = false;
for (let [nDist, lSugg] of this.dSugg.entries()) {
if (nDist > this.nDistLimit) {
break;
}
if (!bFirstListSorted && lSugg.length > 1) {
//lRes.sort((a, b) => { return str_transform.distanceDamerauLevenshtein(this.sWord, a) - str_transform.distanceDamerauLevenshtein(this.sWord, b); });
lRes.sort((a, b) => { return str_transform.distanceJaroWinkler(this.sWord, b) - str_transform.distanceJaroWinkler(this.sWord, a); });
bFirstListSorted = true;
}
lRes.push(...lSugg);
if (lRes.length > nSuggLimit) {
break;
}
}
|
| ︙ | ︙ |