73 lines
1.7 KiB
JavaScript
73 lines
1.7 KiB
JavaScript
suite('search', function () {
|
|
var documents = [{
|
|
id: 'a',
|
|
title: 'Mr. Green kills Colonel Mustard',
|
|
body: 'Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.',
|
|
wordCount: 19
|
|
},{
|
|
id: 'b',
|
|
title: 'Plumb waters plant',
|
|
body: 'Professor Plumb has a green plant in his study',
|
|
wordCount: 9
|
|
},{
|
|
id: 'c',
|
|
title: 'Scarlett helps Professor',
|
|
body: 'Miss Scarlett watered Professor Plumbs green plant while he was away from his office last week.',
|
|
wordCount: 16
|
|
}]
|
|
|
|
var idx = lunr(function () {
|
|
this.ref('id')
|
|
this.field('title')
|
|
this.field('body')
|
|
|
|
documents.forEach(function (doc) {
|
|
this.add(doc)
|
|
}, this)
|
|
})
|
|
|
|
this.add('single term', function () {
|
|
idx.search('green')
|
|
})
|
|
|
|
this.add('multi term', function () {
|
|
idx.search('green plant')
|
|
})
|
|
|
|
this.add('trailing wildcard', function () {
|
|
idx.search('pl*')
|
|
})
|
|
|
|
this.add('leading wildcard', function () {
|
|
idx.search('*ant')
|
|
})
|
|
|
|
this.add('contained wildcard', function () {
|
|
idx.search('p*t')
|
|
})
|
|
|
|
this.add('with field', function () {
|
|
idx.search('title:plant')
|
|
})
|
|
|
|
this.add('edit distance', function () {
|
|
idx.search('plint~2')
|
|
})
|
|
|
|
this.add('typeahead', function () {
|
|
idx.query(function (q) {
|
|
q.term("pl", { boost: 100, usePipeline: true })
|
|
q.term("pl", { boost: 10, usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING })
|
|
q.term("pl", { boost: 1, editDistance: 1 })
|
|
})
|
|
})
|
|
|
|
this.add('negated query', function () {
|
|
idx.search('-plant')
|
|
})
|
|
|
|
this.add('required term', function () {
|
|
idx.search('green +plant')
|
|
})
|
|
})
|