39 lines
940 B
Markdown
39 lines
940 B
Markdown
|
+++
|
||
|
date = "2021-07-02"
|
||
|
tags = ["hugo"]
|
||
|
title = "hugoでsearchするやつ付けてみた"
|
||
|
slug = "hugo-search"
|
||
|
+++
|
||
|
|
||
|
[/search](/search)
|
||
|
|
||
|
記事を検索したい場合、自分はcontent/postをgrepするだけなので、あまり使わないのですが、一応、webにも検索フォームを付けてみました。
|
||
|
|
||
|
hugo + vue + lunr.jsです。
|
||
|
|
||
|
ただ、日本語はおそらく対応してない。対応するには日本語対応するためのlibを追加で読み込む必要がありそう。
|
||
|
|
||
|
lunrに渡すdataは、hugoがjson出力できるので、それを使います。
|
||
|
|
||
|
```toml:config.toml
|
||
|
[outputs]
|
||
|
home = ["JSON", "HTML"]
|
||
|
```
|
||
|
|
||
|
jsはこんな感じで(要点記述だけですが)。
|
||
|
|
||
|
```js:static/script.js
|
||
|
axios('/index.json')
|
||
|
|
||
|
this.searchIndex = lunr(function () {
|
||
|
this.ref('href')
|
||
|
this.field('contents')
|
||
|
this.field('title')
|
||
|
this.field('tags')
|
||
|
documents.forEach(doc => {
|
||
|
this.add(doc)
|
||
|
})
|
||
|
}
|
||
|
```
|
||
|
|