使用Cloud设计有效的JSON文档全文搜索的建议。大表

时间:2018-11-15 04:33:22

标签: google-cloud-platform google-cloud-bigtable

我们需要帮助设计BigTable(例如结构JSON文档)的全文本搜索并支持AND布尔查询

为支持OR,我们认为我们的设计相对不错, 架构就是这样:

行键格式:

json.field_type_1:value1:doc_ids_family {“ docid1”,“ docid2”,“ docid3”,...} json.field_type_1:value2:doc_ids_family {“ docid2”,“ docid4”,“ docid5”,...} json.field_type_2:value1:doc_ids_family {“ docid1”,“ docid4”,“ docid6”,...} json.field_type_1:value2:doc_ids_family {“ docid6”,“ docid7”,“ docid8”,...}

每行都有一列列,在许多情况下,这些列具有数千(或数百万)列,其中键是文档ID(空白字节[])

简单的OR匹配有效O(1),然后我们进行分页

但是找到列的交集(本质上说,两种类型具有正确值的文档ID是O(n)的文档-需要进行完整的列范围扫描,我们可能需要先遍历数千列,然后再对齐它们

我们不能依赖于具有辅助索引表,因为条件的数量(AND查询可能包含的字段数是用户定义的,并且我们不预先知道字段/值的数量-它们是从JSON文档中标记的)

谢谢您的建议

1 个答案:

答案 0 :(得分:0)

添加加里(Gary)的评论作为正式答案:

Cloud Bigtable不一定是完成这项工作的最佳工具。

您是否无法像Elasticsearch这样索引数据?另外,Algolia和Google Cloud Firestore的组合在这种特定情况下应该可以很好地工作:

https://cloud.google.com/firestore/docs/solutions/search