我需要在 Umbraco 4.7 上创建网站,我需要按价格比较一些产品和一些其他属性(大约 10 个)。我需要对信息进行搜索和排序,产品数量将超过 200K+ 项。我现在已经在 30K 上进行了测试,它似乎有点慢。所以,我的问题是:我应该如何构建我的系统?通过使用 umbraco 节点,我如何提高 200K+ 节点集合中的搜索速度?或者也许我必须将 SQl 服务器和 umbraco 结合起来,在这种情况下,我会确保我有最佳的速度来处理这么多的数据?如果您对如何实施此解决方案有任何经验或想法,请提供一些提示。如果您有一些具体实施的链接,则最好。
3 回答
如果 Umbraco 是给定的,则有三种架构选择:
首先将产品和产品范围添加为内容部分中的树结构 - 但考虑到这将导致 app_data\umbraco.config 膨胀,我认为 200,000 种产品会严重减慢速度。
其次,使用像ucommerce这样的产品目录产品,您可以在其中对产品进行编目,然后使用 umbraco 来布局范围、产品、搜索页面 - 并连接到 ucommerce API 以从 Sql Server 数据库中提取产品。这会更高效并且有很好的支持,但是 ucommerce 有收费元素(对于大型安装 - 您可以免费尝试),您将无法设置个人范围管理。
最后,您可以推出自己的数据库和产品维护系统,并添加自己的专用部分——但开发成本很高。
我个人会使用 ucommerce 或类似的产品/目录维护 Umbraco add-id,因为这样可以避免减慢 Umbraco 的速度并为您提供预先编写的维护工具。
关于您的选择,我同意 Amelvin 的观点。使用 LinqToSql 将数据卸载到自定义数据库实现将是一个有效的选项。这里的问题纯粹是减轻 Umbraco 的压力。
WRT搜索,我会认真考虑使用Examine。它旨在处理您正在谈论的数据量等等。它建立在 Lucene.net 之上,因此无论数据量如何都非常快。
正如 Digbyswift 所提到的,使用 Examine 来执行搜索,这比标准搜索要快得多,并且在执行搜索时您不会访问数据库。