diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2022-05-11 00:09:35 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-11 00:09:35 +0900 |
| commit | d34915f691ca78596f57fcb73bbc9de08675d65a (patch) | |
| tree | 427f33b804831917de064889cf9cbe7477b04a4b | |
| parent | 7274447c36949bb63bef0a78bc23f8842d8c7320 (diff) | |
| parent | a9a90d450d11a06dff8bc49a89352e733e904fcf (diff) | |
| download | rust-d34915f691ca78596f57fcb73bbc9de08675d65a.tar.gz rust-d34915f691ca78596f57fcb73bbc9de08675d65a.zip | |
Rollup merge of #96879 - notriddle:notriddle/search-ranking, r=GuillaumeGomez
rustdoc: search result ranking fix # Before  # After 
| -rw-r--r-- | src/librustdoc/html/static/js/search.js | 2 | ||||
| -rw-r--r-- | src/test/rustdoc-js-std/path-ordering.js | 12 | ||||
| -rw-r--r-- | src/test/rustdoc-js/path-ordering.js | 14 | ||||
| -rw-r--r-- | src/test/rustdoc-js/path-ordering.rs | 9 |
4 files changed, 36 insertions, 1 deletions
diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index 677e9b5f03a..7754d626e20 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -1323,7 +1323,6 @@ window.initSearch = rawSearchIndex => { } } lev = levenshtein(searchWord, elem.pathLast); - lev += lev_add; if (lev > 0 && elem.pathLast.length > 2 && searchWord.indexOf(elem.pathLast) > -1) { if (elem.pathLast.length < 6) { @@ -1332,6 +1331,7 @@ window.initSearch = rawSearchIndex => { lev = 0; } } + lev += lev_add; if (lev > MAX_LEV_DISTANCE) { return; } else if (index !== -1 && elem.fullPath.length < 2) { diff --git a/src/test/rustdoc-js-std/path-ordering.js b/src/test/rustdoc-js-std/path-ordering.js new file mode 100644 index 00000000000..7dcdd402312 --- /dev/null +++ b/src/test/rustdoc-js-std/path-ordering.js @@ -0,0 +1,12 @@ +const QUERY = 'hashset::insert'; + +const EXPECTED = { + 'others': [ + // ensure hashset::insert comes first + { 'path': 'std::collections::hash_set::HashSet', 'name': 'insert' }, + { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert' }, + { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_with' }, + { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_owned' }, + { 'path': 'std::collections::hash_map::HashMap', 'name': 'insert' }, + ], +}; diff --git a/src/test/rustdoc-js/path-ordering.js b/src/test/rustdoc-js/path-ordering.js new file mode 100644 index 00000000000..4aee569b0f4 --- /dev/null +++ b/src/test/rustdoc-js/path-ordering.js @@ -0,0 +1,14 @@ +// exact-check + +const QUERY = 'b::ccccccc'; + +const EXPECTED = { + 'others': [ + // `ccccccc` is an exact match for all three of these. + // However `b` is a closer match for `bb` than for any + // of the others, so it ought to go first. + { 'path': 'path_ordering::bb', 'name': 'Ccccccc' }, + { 'path': 'path_ordering::aa', 'name': 'Ccccccc' }, + { 'path': 'path_ordering::dd', 'name': 'Ccccccc' }, + ], +}; diff --git a/src/test/rustdoc-js/path-ordering.rs b/src/test/rustdoc-js/path-ordering.rs new file mode 100644 index 00000000000..7843cf7f9dc --- /dev/null +++ b/src/test/rustdoc-js/path-ordering.rs @@ -0,0 +1,9 @@ +pub mod dd { + pub struct Ccccccc; +} +pub mod aa { + pub struct Ccccccc; +} +pub mod bb { + pub struct Ccccccc; +} |
