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; } } |
︙ | ︙ |