From 6351ebb7e55345d799499c8a326530d3ce35e00a Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 13 Dec 2017 00:20:45 +0100 Subject: [PATCH 1/2] make doc search more relevant --- src/librustdoc/html/static/main.js | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 81971157b8492..0c775f2a58e28 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -681,6 +681,9 @@ } function checkPath(startsWith, lastElem, ty) { + if (startsWith.length === 0) { + return 0; + } var ret_lev = MAX_LEV_DISTANCE + 1; var path = ty.path.split("::"); @@ -706,18 +709,7 @@ lev_total += lev; } if (aborted === false) { - var extra = MAX_LEV_DISTANCE + 1; - if (i + startsWith.length < path.length) { - extra = levenshtein(path[i + startsWith.length], lastElem); - } - if (extra > MAX_LEV_DISTANCE) { - extra = levenshtein(ty.name, lastElem); - } - if (extra < MAX_LEV_DISTANCE + 1) { - lev_total += extra; - ret_lev = Math.min(ret_lev, - Math.round(lev_total / (startsWith.length + 1))); - } + ret_lev = Math.min(ret_lev, Math.round(lev_total / startsWith.length)); } } return ret_lev; @@ -934,6 +926,9 @@ } lev += lev_add; + if (searchWords[j].startsWith(val)) { + lev -= 1; + } if (in_args <= MAX_LEV_DISTANCE) { if (results_in_args[fullId] === undefined) { results_in_args[fullId] = { From 97c18f420e33b6468949cf42662b3fdac809f14e Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Fri, 15 Dec 2017 15:42:38 +0100 Subject: [PATCH 2/2] Improve results a bit --- src/librustdoc/html/static/main.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 0c775f2a58e28..1b9035367f7e2 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -926,8 +926,12 @@ } lev += lev_add; - if (searchWords[j].startsWith(val)) { - lev -= 1; + if (lev > 0 && val.length > 3 && searchWords[j].startsWith(val)) { + if (val.length < 6) { + lev -= 1; + } else { + lev = 0; + } } if (in_args <= MAX_LEV_DISTANCE) { if (results_in_args[fullId] === undefined) {