gpt4 book ai didi

Cassandra CQL 在列表中搜索元素

转载 作者:行者123 更新时间:2023-12-04 22:04:26 28 4
gpt4 key购买 nike

我有一个表,有一列 list类型(标签):

CREATE TABLE "Videos" (
video_id UUID,
title VARCHAR,
tags LIST<VARCHAR>,
PRIMARY KEY (video_id, upload_timestamp)
) WITH CLUSTERING ORDER BY (upload_timestamp DESC);

我在 tags 中有很多包含各种值的行列,即。 ["outdoor","funny cats","funny mice"] .

我要表演 SELECT将返回 tags 中包含“funny cat”的所有行的查询柱子。我怎样才能做到这一点?

最佳答案

要直接回答您的问题,是的,有一种方法可以做到这一点。从 Cassandra 2.1 开始,您可以在集合上创建二级索引。首先,我将重新创建您的列族定义(同时为 upload_timestamp timeuuid 添加定义)并在其中放入一些值。

aploetz@cqlsh:stackoverflow> SELECT * FROM videos ;

video_id | upload_timestamp | tags | title
--------------------------------------+--------------------------------------+-----------------------------------------------+---------------------------
2977b806-df76-4dd7-a57e-11d361e72ce1 | fc011080-64f9-11e4-a819-21b264d4c94d | ['sci-fi', 'action', 'adventure'] | Star Wars
ab696e1f-78c0-45e6-893f-430e88db7f46 | 8db7c4b0-64fa-11e4-a819-21b264d4c94d | ['documentary'] | The Witches of Whitewater
15e6bc0d-6195-4d8b-ad25-771966c780c8 | 1680d120-64fa-11e4-a819-21b264d4c94d | ['dark comedy', 'action', 'language warning'] | Pulp Fiction

(3 rows)

接下来,我将在 tags 上创建二级索引柱子:
aploetz@cqlsh:stackoverflow> CREATE INDEX ON videos (tags);

现在,如果我想查询包含“ Action ”标签的视频,我可以使用 CONTAINS 来完成此操作。关键词:
aploetz@cqlsh:stackoverflow> SELECT * FROM videos WHERE tags CONTAINS 'action';

video_id | upload_timestamp | tags | title
--------------------------------------+--------------------------------------+-----------------------------------------------+--------------
2977b806-df76-4dd7-a57e-11d361e72ce1 | fc011080-64f9-11e4-a819-21b264d4c94d | ['sci-fi', 'action', 'adventure'] | Star Wars
15e6bc0d-6195-4d8b-ad25-771966c780c8 | 1680d120-64fa-11e4-a819-21b264d4c94d | ['dark comedy', 'action', 'language warning'] | Pulp Fiction

(2 rows)

说了这么多,我应该传递几个警告:
  • 二级索引在规模上表现不佳。它们的存在是为了提供便利,而不是性能。如果您希望经常按标签查询,那么解决这个问题的正确方法是创建一个 videosbytag查询表,具有相同的数据,但键控如下:PRIMARY KEY (tag,video_id)
  • 您不需要表名中的双引号。事实上,把它放在引号中可能会给你带来问题(好吧,也许是轻微的刺激)。
  • 关于Cassandra CQL 在列表中搜索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26759039/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com