2

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

4

1 回答 1

4

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

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

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

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

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

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

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

于 2017-09-14T08:43:29.747 回答