// lunrjs.com/guides/index_prebuilding.html

process.stdin.resume() process.stdin.setEncoding('utf8')

const lunr = require('lunr'),

readline = require('readline'),
lang = process.argv[2],
rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
})

// Load Lunr languages if (lang !== 'en') {

require("lunr-languages/lunr.stemmer.support")(lunr)
require(`lunr-languages/lunr.${lang}`)(lunr)

}

let builder

// Process each document as a separate line rl.on('line', line => {

const doc = JSON.parse(line)

// If the builder isn't initialized, create it
if (!builder) {
  builder = new lunr.Builder
  builder.pipeline.add(
    lunr.trimmer,
    lunr.stopWordFilter,
    lunr.stemmer
  )

  builder.searchPipeline.add(lunr.stemmer)

  if (lang !== 'en') builder.use(lunr[lang])

  Object.keys(doc).forEach(field => builder.field(field))
}

builder.add(doc)

})

process.stdin.on('end', () => process.stdout.write(JSON.stringify(builder.build())))