Hugo 的相关内容算法如何工作?有哪些因素?

发布于 2025-01-11 01:48:36 字数 334 浏览 0 评论 0原文

他们在他们的网站上说:

Hugo 使用一组因素根据 Front Matter 参数来识别页面的相关内容。可以将其调整为所需的索引和参数集,或保留 Hugo 的默认相关内容配置。

来源

但是算法到底是如何工作的呢?有哪些因素?

On their website they say:

Hugo uses a set of factors to identify a page’s related content based on Front Matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo’s default Related Content configuration.

Source

But how exactly does the algorithmus work? What are the factors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み零 2025-01-18 01:48:36

gohugoio/hugo PR 3815 中解释了原始方法

已经开始多次尝试修复#98——所有这些都由于某种原因失败。
这是一个很难解决的问题,我认为失败的主要原因是自下而上的方法,即我们从最难的问题开始:解决夏洛克的最后一个案子

我现在再次拿起这个球的原因是这个 Twitter 帖子:< /p>

在页面参数中使用 intersect 和关键字效果相当好,但它是二次的,对于较大的网站来说会很慢,甚至无法使用。

因此,我没有解决最难的问题,而是通过概述一个界面来开始此 PR:

类型 PageSearcher 接口 {
  搜索(args ...interface{})(页面,错误)
  SearchIndex(索引字符串, args ...interface{}) (页面, 错误)
  相似(p *Page)(页数,错误)
  LikeIndex(索引字符串, p *Page) (页面, 错误)
}

欢迎命名建议。

这个想法是用户在 config.toml 中定义一组索引:

索引:
 - 参数:关键字
   重量:1
- 参数:标签
   重量:3

然后我们从中懒惰地构建某种索引,然后您可以进行快速搜索,例如:

{{ .Site.RegularPages.Similar . }}
{{ .Site.RegularPages.Search "hugo" }}
{{ .Site.RegularPages.SearchIndex "关键字" "hugo" |限制 10 }}

初始实现: com/gohugoio/hugo/commit/3b4f17bbc9ff789faa581ac278ad109d1ac5b816" rel="nofollow noreferrer">gohugoio/hugo 提交 3b4f17b

The original approach is explained in gohugoio/hugo PR 3815

Several attempts have been started to fix #98 -- all of them have failed for some reason.
It is a hard problem to solve, and I think the main reason for failure has been the bottom-up-approach, i.e. we have started with the hardest problem: Solving Sherlock's last case.

The reason I'm picking up this ball again now is this Twitter thread:

Using intersect and keywords in page params work reasonably well, but it is quadratic and will be slow to unusable for larger sites.

So, instead of solving the hardest problem, I have started on this PR by outlining an interface:

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)
}

Naming suggestions welcomed.

The idea is that a user defines a set of indexes in config.toml:

indexes:
 - param: keywords
   weight: 1
- param: tags
   weight: 3

Then we lazily build some sort of index from that, and then you can do fast searches like:

{{ .Site.RegularPages.Similar . }}
{{ .Site.RegularPages.Search "hugo" }}
{{ .Site.RegularPages.SearchIndex "keywords" "hugo" | limit 10 }}

Initial implementation: gohugoio/hugo commit 3b4f17b

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文