diff --git a/docs/app/src/search.js b/docs/app/src/search.js index 23755871..f7a6cad0 100644 --- a/docs/app/src/search.js +++ b/docs/app/src/search.js @@ -74,6 +74,7 @@ angular.module('search', []) var index = lunrSearch(function() { this.ref('id'); this.field('title', {boost: 50}); + this.field('members', { boost: 40}); this.field('keywords', { boost : 20 }); }); @@ -82,7 +83,8 @@ angular.module('search', []) index.store({ id : key, title : page.searchTerms.titleWords, - keywords : page.searchTerms.keywords + keywords : page.searchTerms.keywords, + members : page.searchTerms.members }); }; }); diff --git a/docs/config/processors/keywords.js b/docs/config/processors/keywords.js index 7b3dd7e6..cf029fcc 100644 --- a/docs/config/processors/keywords.js +++ b/docs/config/processors/keywords.js @@ -1,3 +1,4 @@ +"use strict"; var _ = require('lodash'); var log = require('winston'); var fs = require('fs'); @@ -5,7 +6,7 @@ var path = require('canonical-path'); module.exports = { name: 'keywords', - runAfter: ['docs-processed'], + runAfter: ['docs-processed', 'api-docs'], runBefore: ['adding-extra-docs'], description: 'This processor extracts all the keywords from the document', process: function(docs, config) { @@ -52,7 +53,7 @@ module.exports = { _.forEach(tokens, function(token){ var match = token.match(KEYWORD_REGEX); if (match){ - key = match[1]; + var key = match[1]; if ( !keywordMap[key]) { keywordMap[key] = true; words.push(key); @@ -69,17 +70,28 @@ module.exports = { var words = []; var keywordMap = _.clone(ignoreWordsMap); + var members = []; + var membersMap = {}; // Search each top level property of the document for search terms _.forEach(doc, function(value, key) { + if ( _.isString(value) && !propertiesToIgnore[key] ) { extractWords(value, words, keywordMap); } + + if ( key === 'methods' || key === 'properties' || key === 'events' ) { + _.forEach(value, function(member) { + extractWords(member.name, members, membersMap); + }); + } }); + doc.searchTerms = { titleWords: extractTitleWords(doc.name), - keywords: _.sortBy(words).join(' ') + keywords: _.sortBy(words).join(' '), + members: _.sortBy(members).join(' ') }; });