-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
47 lines (40 loc) · 1.49 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
'use strict';
const lunr = require('lunr')
require("lunr-languages/lunr.stemmer.support")(lunr)
require('lunr-languages/lunr.fr')(lunr)
require('lunr-languages/lunr.es')(lunr)
require('lunr-languages/lunr.pt')(lunr)
const fs = require('fs');
const axios = require('axios');
const dir = './indices';
try {
fs.rmdirSync(dir, {
recursive: true
});
fs.mkdirSync(dir);
console.log(`${dir} is deleted and remade!`);
} catch (err) {
console.error(`Error while deleting ${dir}.`);
}
let searchCorpora = ['https://programminghistorian.org/en/search.json', 'https://programminghistorian.org/fr/search.json', 'https://programminghistorian.org/es/search.json', 'https://programminghistorian.org/pt/search.json'];
searchCorpora.map(searchFile => {
let language = searchFile.split('/').reverse()[1];
console.log('language', language);
axios.get(searchFile).then((response)=>{
let searchBuilder = response.data;
const idx = lunr((builder) => {
language != 'en' ? builder.use(lunr[language]) : null;
builder.ref('id');
builder.ref('url');
builder.field('title');
builder.field('body');
builder.metadataWhitelist = ['position']
searchBuilder.forEach(function (doc) {
builder.add(doc)
}, builder)
});
fs.writeFileSync(`./indices/index${language.toUpperCase()}.json`, JSON.stringify(idx));
}).catch((err) => {
console.log(err);
});
});