使用基于文档的数据存储实现复杂搜索的最佳方法

时间:2018-08-21 13:32:26

标签: javascript node.js reactjs firebase google-cloud-firestore

这不是与代码本身直接相关的问题,而是更多关于实现某些东西的最佳方法。

我的应用程序是使用JavaScript构建的,特别是使用React来完成的,它允许用户拥有多个产品,每个产品都有多个子项目。例如,用户可能创建了一个名为“手工木制雕花狗碗”的产品,然后为其列出产品的每个网站都有子项目。数据集看起来像这样:

{ 
  "name": "Handmade Wooden Engraved Dog Bowl",
  "tags": ["wooden", "handmade", "engraved", "pet", "dog", "bowl"],
  "item": {
    id1: {
      "name": "Handmade Dog Bowl",
      "website": "amazon",
      "active": true,
      },
    id2: {
      "name": "Handmade Wooden Dog Bowl",
      "website": "etsy",
      "active": false,
      }
  }
}

我需要能够搜索产品名称,产品选项卡,然后还要搜索每个项目中的数据。

例如,显示所有产品,其中标签包含engraved dog bowl,标签包含handmade和标签etsy = false

也许可以通过Firestore在客户端进行此操作,但是它将需要大量调用,并且数据处理将取决于用户的计算机。

这里的问题是每个用户平均拥有大约2,000种产品,而我们可能正在寻找2,000个用户,并且由于成本极高,因此排除了像Algolia这样的产品。

有人对我如何解决这个搜索问题有任何建议吗?

1 个答案:

答案 0 :(得分:1)

您询问如何实现搜索算法。 Meet Zaveri Algorithms I : Searching and Sorting algorithms的这篇文章很好地介绍了这些想法。

渐近符号 大哦(O) 大欧米茄(Ω) 大Theta(Θ)

空间复杂度

线性搜索

二进制搜索

散列/散列函数