【发布时间】:2017-09-14 16:43:29
【问题描述】:
平面文件 CMS 不使用数据库。那么搜索是如何实现的呢?与数据库驱动的搜索相比,使用这种类型的设置搜索或多或少的计算成本高吗?
【问题讨论】:
标签: content-management-system hugo grav gatsby
平面文件 CMS 不使用数据库。那么搜索是如何实现的呢?与数据库驱动的搜索相比,使用这种类型的设置搜索或多或少的计算成本高吗?
【问题讨论】:
标签: content-management-system hugo grav gatsby
静态网站和搜索结合在一起的问题在于,一个是静态的,而另一个是高度动态的。所以开箱即用没有简单的方法可以让两人幸福地生活在一起。
平面文件 CMS 不是静态网站。虽然解析文件比解析数据库成本更高(通常?),但底层 CMS 可以轻松提供搜索功能。寻找可以提供你想要的插件。
但是,有一些非平凡的解决方案可以实现您想要的,这取决于您的基础架构和容量以及您的站点是否可以实现服务器端计算(grav 可以、gatsby 和 hugo 不能)。
最简单的方法是在一个特殊文件中创建所有内容的索引,然后加载该文件并在客户端执行搜索。您甚至可以使用已经制作的包来加快此选项的开发时间。 (例如:https://www.npmjs.com/package/react-fuzzy-search)
优点是做起来很简单。缺点是索引会变得相当大,并且所有搜索都是在客户端完成的(因此,如果索引足够大,用户可能会等待很长时间)。此解决方案也无法很好地扩展。
另一种方法是使用搜索服务(作为 SAAS 或在您自己的场所)将搜索功能外部化。基本上,该服务运行您的服务器,将有一种方法来索引您的内容(通过 API)和搜索(通过 API)。只要确保搜索 API 是公开的,您就可以从客户端实时查询它。
此解决方案的扩展性非常好,因为此类服务是从头开始扩展的!但是,设置成本确实很高,如果您不打算扩展到数百万页,则不值得。
【讨论】: