Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 3952408

Browse files
chore(docs): improve searching by member
The keywords processor now also extracts the members (i.e. method, properties and events) into its own search term property. These are then used in the lunr search index with higher weighting that normal keywords to push services that contain the query term as a member higher up the search results. Closes #7661
1 parent 02bada1 commit 3952408

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

docs/app/src/search.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ angular.module('search', [])
7474
var index = lunrSearch(function() {
7575
this.ref('id');
7676
this.field('title', {boost: 50});
77+
this.field('members', { boost: 40});
7778
this.field('keywords', { boost : 20 });
7879
});
7980

@@ -82,7 +83,8 @@ angular.module('search', [])
8283
index.store({
8384
id : key,
8485
title : page.searchTerms.titleWords,
85-
keywords : page.searchTerms.keywords
86+
keywords : page.searchTerms.keywords,
87+
members : page.searchTerms.members
8688
});
8789
};
8890
});

docs/config/processors/keywords.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
"use strict";
12
var _ = require('lodash');
23
var log = require('winston');
34
var fs = require('fs');
45
var path = require('canonical-path');
56

67
module.exports = {
78
name: 'keywords',
8-
runAfter: ['docs-processed'],
9+
runAfter: ['docs-processed', 'api-docs'],
910
runBefore: ['adding-extra-docs'],
1011
description: 'This processor extracts all the keywords from the document',
1112
process: function(docs, config) {
@@ -52,7 +53,7 @@ module.exports = {
5253
_.forEach(tokens, function(token){
5354
var match = token.match(KEYWORD_REGEX);
5455
if (match){
55-
key = match[1];
56+
var key = match[1];
5657
if ( !keywordMap[key]) {
5758
keywordMap[key] = true;
5859
words.push(key);
@@ -69,17 +70,28 @@ module.exports = {
6970

7071
var words = [];
7172
var keywordMap = _.clone(ignoreWordsMap);
73+
var members = [];
74+
var membersMap = {};
7275

7376
// Search each top level property of the document for search terms
7477
_.forEach(doc, function(value, key) {
78+
7579
if ( _.isString(value) && !propertiesToIgnore[key] ) {
7680
extractWords(value, words, keywordMap);
7781
}
82+
83+
if ( key === 'methods' || key === 'properties' || key === 'events' ) {
84+
_.forEach(value, function(member) {
85+
extractWords(member.name, members, membersMap);
86+
});
87+
}
7888
});
7989

90+
8091
doc.searchTerms = {
8192
titleWords: extractTitleWords(doc.name),
82-
keywords: _.sortBy(words).join(' ')
93+
keywords: _.sortBy(words).join(' '),
94+
members: _.sortBy(members).join(' ')
8395
};
8496

8597
});

0 commit comments

Comments
 (0)