11const path = require ( 'path' )
22const lunr = require ( 'lunr' )
3+ require ( 'lunr-languages/lunr.stemmer.support' ) ( lunr )
4+ require ( 'lunr-languages/tinyseg' ) ( lunr )
5+ require ( 'lunr-languages/lunr.ja' ) ( lunr )
6+ require ( 'lunr-languages/lunr.es' ) ( lunr )
7+ require ( 'lunr-languages/lunr.pt' ) ( lunr )
8+ require ( 'lunr-languages/lunr.de' ) ( lunr )
39const { get } = require ( 'lodash' )
410const readFileAsync = require ( '../readfile-async' )
511const { namePrefix } = require ( './config' )
@@ -9,7 +15,7 @@ const LUNR_DIR = './indexes'
915const lunrIndexes = new Map ( )
1016const lunrRecords = new Map ( )
1117
12- module . exports = async function loadLunrResults ( { version, language, query, limit } ) {
18+ async function loadLunrResults ( { version, language, query, limit } ) {
1319 const indexName = `${ namePrefix } -${ version } -${ language } `
1420 if ( ! lunrIndexes . has ( indexName ) || ! lunrRecords . has ( indexName ) ) {
1521 lunrIndexes . set ( indexName , await loadLunrIndex ( indexName ) )
@@ -33,6 +39,15 @@ module.exports = async function loadLunrResults ({ version, language, query, lim
3339 return results
3440}
3541
42+ loadLunrResults . warmLunr = async function warmLunr ( ) {
43+ // Took about 60 seconds on local to warm them all...
44+ // so doing just the most common for prewarming
45+ const indexName = 'github-docs-dotcom-en'
46+ lunrRecords . set ( indexName , await loadLunrRecords ( indexName ) )
47+ lunrIndexes . set ( indexName , await loadLunrIndex ( indexName ) )
48+ return true
49+ }
50+
3651async function loadLunrIndex ( indexName ) {
3752 const filePath = path . posix . join ( __dirname , LUNR_DIR , `${ indexName } .json.br` )
3853 // Do not set to 'utf8' on file reads
@@ -82,3 +97,5 @@ function field (result, record, name) {
8297function mark ( text ) {
8398 return `<mark>${ text } </mark>`
8499}
100+
101+ module . exports = loadLunrResults
0 commit comments