17 lines
496 B
JavaScript
17 lines
496 B
JavaScript
|
import Lunr from 'lunr';
|
||
|
|
||
|
Lunr.tokenizer.separator = /[\s\-|_]+/;
|
||
|
|
||
|
export default items =>
|
||
|
Lunr(function() {
|
||
|
const fields = items
|
||
|
.map(item => Object.keys(item))
|
||
|
.reduce((all, keys) => all.concat(keys), [])
|
||
|
// eslint-disable-next-line no-implicit-coercion
|
||
|
.reduce((all, key) => (~all.indexOf(key) ? all : all.concat(key)), [])
|
||
|
.filter(key => !key.match(/^__/));
|
||
|
|
||
|
fields.forEach(field => this.field(field));
|
||
|
items.forEach(item => this.add(item));
|
||
|
});
|