如何在平面文件 CMS 中实现搜索

How are searches implemented in a Flat File CMS

平面文件 CMS 不使用数据库。那么搜索是如何实现的呢?与数据库驱动的搜索相比,使用这种类型的设置进行搜索的计算成本更高还是更低?

同时使用静态站点和搜索的问题在于,根据定义,一个是静态的,而另一个是高度动态的。所以开箱即用,没有简单的方法可以让两人幸福地生活在一起。

平面文件 CMS 不是静态网站。虽然解析文件比解析数据库(通常?)成本更高,但底层 CMS 可以轻松提供搜索功能。寻找可以提供您想要的东西的插件。

但是,有一些非常重要的解决方案可以实现您想要的,这取决于您的基础设施和容量以及您的站点是否可以实现服务器端计算(grav 可以,gatsby 和 hugo 不能)。

最简单的方法是在一个特殊文件中创建所有内容的索引,然后加载它并在客户端进行搜索。您甚至可以使用已经制作的包来加快此选项的开发时间。 (例如:https://www.npmjs.com/package/react-fuzzy-search

优点是做起来很简单。缺点是索引会变得非常大,并且所有搜索都是在客户端完成的(因此,如果索引足够大,用户可能需要等待很长时间)。此解决方案也无法很好地扩展。

另一种方法是使用搜索服务(作为 SAAS 或在您自己的场所)来外部化搜索功能。基本上这个服务 运行 是您的服务器,将有一种方法来索引您的内容(通过 API)和搜索即(通过 API)。只要确保搜索 API 是 public 就可以从客户端实时查询它。

此解决方案的扩展性非常好,因为此类服务是从头开始构建的,可以扩展!但是,设置成本非常高,如果您不打算扩展到数百万页,则不值得。