From 42092024ebd81896e741829c50f37a7e0095392e Mon Sep 17 00:00:00 2001 From: Roman Nurik Date: Tue, 13 Apr 2010 16:23:42 -0700 Subject: [PATCH] Enable query highlighting and result ranking for search autocomplete on d.a.c. Also make it case-insensitive. Change-Id: Ifa52bb48c7b03c9aa7ad03cfe3e0049024f71a8d --- .../assets/android-developer-core.css | 2 +- .../templates/assets/search_autocomplete.js | 107 ++++++++++++++++-- 2 files changed, 100 insertions(+), 9 deletions(-) diff --git a/tools/droiddoc/templates/assets/android-developer-core.css b/tools/droiddoc/templates/assets/android-developer-core.css index 750567efd4..92e4c530d5 100644 --- a/tools/droiddoc/templates/assets/android-developer-core.css +++ b/tools/droiddoc/templates/assets/android-developer-core.css @@ -519,7 +519,7 @@ div.indent { padding-right: 6px; padding-top: 1px; padding-bottom: 1px; - font-size: .8em; + font-size: 0.81em; border: none; margin: 0; line-height: 1.05em; diff --git a/tools/droiddoc/templates/assets/search_autocomplete.js b/tools/droiddoc/templates/assets/search_autocomplete.js index 4fa47a5904..dd4552f7e1 100644 --- a/tools/droiddoc/templates/assets/search_autocomplete.js +++ b/tools/droiddoc/templates/assets/search_autocomplete.js @@ -2,7 +2,7 @@ var gSelectedIndex = -1; var gSelectedID = -1; var gMatches = new Array(); var gLastText = ""; -var ROW_COUNT = 30; +var ROW_COUNT = 20; var gInitialized = false; var DEFAULT_TEXT = "search developer docs"; @@ -22,7 +22,7 @@ function set_row_selected(row, selected) function set_row_values(toroot, row, match) { var link = row.cells[0].childNodes[0]; - link.innerHTML = match.label; + link.innerHTML = match.__hilabel || match.label; link.href = toroot + match.link // row.cells[1].innerHTML = match.type; } @@ -104,7 +104,7 @@ function sync_selection_table(toroot) function search_changed(e, kd, toroot) { var search = document.getElementById("search_autocomplete"); - var text = search.value; + var text = search.value.replace(/(^ +)|( +$)/g, ''); // 13 = enter if (e.keyCode == 13) { @@ -137,21 +137,112 @@ function search_changed(e, kd, toroot) gMatches = new Array(); matchedCount = 0; gSelectedIndex = -1; - for (i=0; i= 0) { + if (l < 0) l = 0; + l += tmp; + s = s.substr(tmp + 1); + } + return l; + }; + + // helper function that counts the occurrences of a given character in + // a given string + var _countChar = function(s, c) { + var n = 0; + for (var i=0; i= 0) { + // exact part match + var partsAfter = _countChar(labelLower.substr(t + 1), '.'); + score *= 200 / (partsAfter + 1); + } else { + t = _lastSearch(labelLower, partPrefixAlnumRE); + if (t >= 0) { + // part prefix match + var partsAfter = _countChar(labelLower.substr(t + 1), '.'); + score *= 20 / (partsAfter + 1); + } + } + + return score; + }; + + for (var i=0; i$1'); + } +} + function search_focus_changed(obj, focused) { if (focused) {