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

时间:2017-09-10 15:50:49

标签: content-management-system hugo grav gatsby

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

1 个答案:

答案 0 :(得分:3)

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

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

但是,有一些非常简单的解决方案可以实现您的需求,具体取决于您的基础架构和容量,以及您的站点是否可以实现服务器端计算(grav can,gatsby和hugo不能)。

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

专业人士认为这样做非常简单。缺点是索引将在大方面变得非常大并且所有搜索都在客户端完成(因此,如果索引足够大,可能需要很长时间才能为用户提供)。该解决方案也不能很好地扩展。

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

这个解决方案可以很好地扩展,因为这些服务是从头开始制作的!然而,设置成本非常高,如果您不打算扩展到数百万页,则不值得。