微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过文档数据库中的多个标签进行高效搜索

如何解决通过文档数据库中的多个标签进行高效搜索

这个问题不是关于某个文档数据库的提供者,而是一个关于通用文档数据库数据设计的问题。

想象一个简单的文档数据库,它只支持

  • 分区
  • 身份证

现在想象一个拥有博客文章的简单场景,每篇博客文章都带有多达 10 个标签。这是博客文章文档:

{
   "id": 1,"partition": "nielsbrinch","title": "My First Blog Post","content": "<div>Here is my blog content</div>","tags": ["tech","personal","2021","short"]
}

在这个简单的文档数据库中,实际上没有任何搜索。您可以从一个分区中获取所有文档,然后查看内容,因此如果您想通过标签搜索,则必须获取所有文档并检查内容

但是,当您保存文档时,您可以为每个标签在另一个分区中保存一个副本。它看起来像这样(注意分区是“nielsbrinch-tech”):

{
   "id": 1,"partition": "nielsbrinch-tech","short"]
}

这意味着相同的数据出现了 5 次。一个在原始分区中,每个标签再一次。那没问题。这意味着所有标记为“tech”的博客文章都已准备好在一个分区中,并且可以以最佳效率获取

然而,现在假设我有 100,000 篇博文,每篇博文有 20 个标签。不过,没关系,我们可以复制博客文章 20 次。空间便宜。

想象一下,现在我希望能够找到具有两个标签的任意组合的帖子。也许我想(有效地)获得所有标有“技术”和“个人”标签的帖子。

如果我要复印文件并为每个组合制作副本,那么文件数量会爆炸,而且太多了。所以在我看来,这不是一个解决方案。

那是什么?

也许是一些巧妙的映射文档或带有每个组合的匹配集合的文档或类似的东西。我什至不知道从哪里开始,所以我希望有人可以分享一些有关文档数据库设计的理论。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?