Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115,472 changes: 56,843 additions & 58,629 deletions docMap.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions sidebar/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ QUnit.test('When a purpose group page is selected, its expand/collapse button sh

QUnit.test('When a Core package is selected, its parent should not automatically be expanded', function(assert) {
var vm = new ViewModel({searchMap: searchMap});
var canDefinePage = vm.pageMap['can-define'];
var canDefinePage = vm.pageMap['can-observable-object'];
var canObservablesPage = canDefinePage.parentPage;
vm.selectedPage = canDefinePage;
assert.ok(canObservablesPage.isCollapsed, 'parent page is collapsed');
Expand All @@ -188,7 +188,7 @@ QUnit.test('When a Core package is selected, its parent should not automatically

QUnit.test('When a child page of a Core package is selected, the package’s group should not automatically be expanded', function(assert) {
var vm = new ViewModel({searchMap: searchMap});
var canDefineTypesPage = vm.pageMap['can-define.types'];
var canDefineTypesPage = vm.pageMap['can-observable-object/object.static.propertyDefaults'];
var canObservablesPage = canDefineTypesPage.parentPage.parentPage.parentPage;
vm.selectedPage = canDefineTypesPage;
assert.ok(canObservablesPage.isCollapsed, 'parent page is collapsed');
Expand All @@ -206,7 +206,7 @@ QUnit.test('When a collapsed purpose group page with no visible children is sele
QUnit.test('When docs in a package are selected, the group should still have the expand/collapse button', function(assert) {
var vm = new ViewModel({searchMap: searchMap});
var pageMap = vm.pageMap;
var canDefineTypesPage = pageMap['can-define.types'];
var canDefineTypesPage = pageMap['can-observable-object/object.static.propertyDefaults'];
var canObservablesPage = pageMap['can-observables'];
vm.selectedPage = canDefineTypesPage;
assert.ok(vm.shouldShowExpandCollapseButton(canObservablesPage), 'expand/collapse button is shown');
Expand Down
42 changes: 41 additions & 1 deletion static/search-logic.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,24 @@ module.exports = {
this.field('isPackage');
this.field('name');
this.field('url');
this.field('isCorePackage');
this.field('isInfrastructurePackage');
this.field('isLegacyPackage');
this.field('isPage');

this.field('type');


items.forEach(function(item) {
if (!item.title) {
item.title = item.name;
}
item.concatenatedName = item.name.replace('can-', '').replace(/-/g, '').replace(/\//g, '');
item.isPackage = (item.collection !== undefined).toString();
item.isCorePackage = (item.collection === 'can-core').toString();
item.isInfrastructurePackage = (item.collection === 'can-infrastructrue').toString();
item.isLegacyPackage = (item.collection === 'can-legacy').toString();
item.isPage = (item.type === 'page').toString();
this.add(item);
}.bind(this));
});
Expand All @@ -39,10 +50,15 @@ module.exports = {
var HELPER_START_PATTERN = /^#[a-z]/;
var searchTerm = value.toLowerCase();

var isHelper = false;

if (HELPER_START_PATTERN.test(searchTerm)) {
searchTerm = value.substr(1, value.length)
isHelper = true;
}



//run the search
return searchEngine.query(function(q) {

Expand All @@ -52,8 +68,17 @@ module.exports = {
q.term(searchTerm, { boost: 375 });

} else {
if (isHelper) {
// Boost functions if it is a helper
q.term('function', { boost: 14, fields: ['type'] });
}
// add “can-”, look for an exact match in the title field, and apply a positive boost
q.term('can-' + searchTerm, { boost: 12 });
// can-core package have highest boost
q.term(['can-' + searchTerm, 'true'], { boost: 12, fields: ['isCorePackage'] });

q.term(['can-' + searchTerm, 'true'], { boost: 8, fields: ['isInfrastructurePackage'] });

q.term(['can-' + searchTerm, 'true'], { boost: 6, fields: ['isLegacyPackage'] });

// look for terms that match the beginning or end of this query
q.term(searchTerm, { wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING });
Expand All @@ -66,6 +91,21 @@ module.exports = {

// favor modules
q.term('true', { boost: 6, fields: ['isPackage'] });

// Boot core modules a bit
q.term('true', { boost: 16, fields: ['isCorePackage'] });

// Give a boost to infrastructure modules
q.term('true', { boost: 10, fields: ['isInfrastructurePackage'] });

// Give a boost to legacy modules
q.term('true', { boost: 18, fields: ['isLegacyPackage'] });

// Give page a boost so they can always be in results if title matchs
q.term('page', { boost: 28, fields: ['type'] });
q.term('typedef', { boost: 12, fields: ['type'] });

q.term('function', { boost: 12, fields: ['type'] });
}

// look for matches in any of the fields and apply a medium positive boost
Expand Down
2 changes: 1 addition & 1 deletion static/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var Control = require("can-control");
var LoadingBar = require('./loading-bar');
var searchResultsRenderer = require("../templates/search-results.stache!steal-stache");
var joinURIs = require("can-util/js/join-uris/");
var currentIndexVersion = 5;// Bump this whenever the index code is changed
var currentIndexVersion = 6;// Bump this whenever the index code is changed

var Search = Control.extend({

Expand Down
24 changes: 17 additions & 7 deletions test/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,21 @@ QUnit.test('Speed while searching for can-*', function(assert) {
});

QUnit.test('Search for helper starting with "#xxx"', function(assert) {
var done = assert.async();
setUpSearchControl.then(function() {
var results = searchLogic.search('#let');
assert.equal(results.length > 1, true, 'Got results for #let');
assert.equal(indexOfPageInResults('can-stache.helpers.let', results), 0, 'first result is the can-stache.helpers.let page');
done();
});
var done = assert.async();
setUpSearchControl.then(function() {
var results = searchLogic.search('#let');
assert.equal(results.length > 1, true, 'Got results for #let');
assert.equal(indexOfPageInResults('can-stache.helpers.let', results), 0, 'first result is the can-stache.helpers.let page');
done();
});
});

QUnit.test("Prioritize core packages in search results", function(assert) {
var done = assert.async();
setUpSearchControl.then(function() {
var results = searchLogic.search('types');
assert.equal(results.length > 1, true, 'Got results for type');
assert.equal(indexOfPageInResults('can-type', results), 0, 'first result is the can-type page');
done();
});
});