ghost 博客中文搜索插件

在用 ghost 博客的时候,发现一直没有合适的搜索插件,主要是官方没提供相应的 search api, ghostHunter 采用 api 获取所有文章的方式,然后用 lunir 做全文搜索。但是 lunir 本身不支持中文分词,虽然有小伙伴提供了中文分词的方案,但是为了一个简单的搜索加了好大一堆库,感觉还是不怎么经济。

所以鉴于此,根据 ghsotHunter 改了个简单的插件,为了效率,api 获取的时候只取 title, 所以只支持简单的 title 匹配搜索, 代码如下:

1
2
3
4
5
6
var searchResult = [];
for(var i=0; i < this.blogData.length; i++) {
if(value && this.blogData[i].title.toLowerCase().search(value.toLowerCase()) != -1){
searchResult.push(this.blogData[i]);
}
}

如果你想要自定义 info_template, result_template, 由于和 ghost 默认的模板冲突,所以可以改下模板定义

1
2
3
4
5
$("#search-field").ghostHunter({
results : "#results",
info_template : "<p>Number of posts found: {{amount}}</p>",
result_template : "<a href='{{link}}'><p><h2>{{title}}</h2>{{description}}</p><p><h4>{{pubDate}}</h4><h4>Tags: {{category}}</h4></p></a>"
});
1
2
3
4
5
6
7
format: function (t, d) {
return t.replace(/{#([^{}]*)#}/g, function (a, b) {
var r = d[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
});
}
1
<a href='{#link#}'><p><h2>{#title#}</h2>{#description#}</p><p><h4>{#pubDate#}</h4><h4>Tags: {#category#}</h4></p></a>

github 地址 https://github.com/facert/ghostHunter