Name: metalsmith-lunr
Owner: Particle
Description: Metalsmith plugin to integrate Lunr.js search engine.
Created: 2015-07-14 21:14:49.0
Updated: 2016-02-10 01:37:48.0
Pushed: 2018-01-03 18:33:14.0
Homepage: null
Size: 22
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
A Metalsmith plugin that integrates the Lunr.js client side search engine.
Builds a searchable JSON index based on Metalsmith metadata.
$ npm install metalsmith-lunr
Include lunr: true
in file metadata to include it in the search index.
: true
e: My Article
: maybe some tags for indexing
rticle contents...
Metalsmith-lunr can be used without options:
lunr = require('metalsmith-lunr');
lsmith.use(lunr()).
Use file metadata as fields
for the search and assign weight for each field. The content
field refers Metalsmith's internal record of the files contents and should not be included in the file metadata.
lunr = require('metalsmith-lunr');
lunr_ = require('lunr');
ire('lunr-languages/lunr.stemmer.support')(lunr_);
ire('lunr-languages/lunr.no')(lunr_);
lsmith.use(lunr({
f: 'title',
dexPath: 'index.json',
elds: {
contents: 1,
tags: 10
pelineFunctions: [
lunr_.trimmer,
lunr_.no.stopWordFilter,
lunr_.no.stemmer
eprocess: function(content) {
// Replace all occurrences of __title__ with the current file's title metadata.
return content.replace(/__title__/g, this.title);
fields
: {metadata search field
: search weight
}ref
: metadata search reference for document
indexPath
: path for JSON index file
pipelineFunctions
: [lunr pipeline functions
] Functions will be called in order by lunr, see lunr doc for more information.preprocess
: a callback function that can pre-process the content of each file before it is indexed. (For example stripping HTML tags). This will not affect the content of the files themselves. The callback is passed the content as a string to it's first argument. The metadata (including the raw content buffer) can be access with this
. The callback must return a string.fields
: {contents
: 1
}ref
: filePath
indexPath
: searchIndex.json
Metalsmith-lunr will generate searchIndex.json. Include lunr.js in your javascript source files. Client side search example can be found here.
Once the JSON file has been parsed into javascript, simply run the following:
dex is the parsed JSON file
= lunr.Index.load(index)
results = idx.search("Your Search Terms Here");
lugins": {
"metalsmith-lunr": {
"fields": {
"tags": 10,
"contents": 1
}
}
npm test
MIT