1 回答
TA贡献1827条经验 获得超7个赞
PR 3815中解释了原始方法gohugoio/hugo
已经开始多次尝试修复#98 —— 由于某种原因,所有尝试都失败了。
这是一个很难解决的问题,我认为失败的主要原因是自下而上的方法,即我们从最难的问题开始:解决 Sherlock 的最后一个案例。
我现在再次拿起这个球的原因是这个 Twitter 线程:
在页面参数中使用 intersect 和关键字工作得相当好,但它是二次的,并且对于较大的站点会很慢而无法使用。
因此,我没有解决最困难的问题,而是通过概述一个界面来开始这个 PR:
type PageSearcher interface {
Search(args ...interface{}) (Pages, error)
SearchIndex(index string, args ...interface{}) (Pages, error)
Similar(p *Page) (Pages, error)
SimilarIndex(index string, p *Page) (Pages, error)
}
欢迎命名建议。
这个想法是用户在 config.toml 中定义一组索引:
indexes:
- param: keywords
weight: 1
- param: tags
weight: 3
然后我们懒惰地建立某种索引,然后您可以进行快速搜索,例如:
{{ .Site.RegularPages.Similar . }}
{{ .Site.RegularPages.Search "hugo" }}
{{ .Site.RegularPages.SearchIndex "keywords" "hugo" | limit 10 }}
初步实施:gohugoio/hugo commit 3b4f17b
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报