【问题标题】:Cassandra prefix searchCassandra 前缀搜索
【发布时间】:2018-10-09 14:02:06
【问题描述】:

我有桌子 CREATE TABLE 网站(url 文本 PRIMARY KEY,count int) 有数据

com.google 5

com.google.subdomain 10

Cassandra 是否支持在单个查询中选择所有谷歌网站(带有子域)?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    Cassandra 有SASI index type,它允许对前缀搜索和包含的文本进行有效索引。但它不能像您的情况那样用于索引分区键。一种可能的解决方法是将相同数据(或仅域部分)的副本作为普通列放入表中,并为该列建立索引。 (这个blog post 对SASI 索引的内部有非常详细的描述)。

    如果你经常做这个操作,那么你可能需要重新建模数据,例如,使用以下结构的表:

    create table site(
       ps text,
       url text,
       count int,
       primary key (ps, url));
    

    其中ps 是域的public suffix。但这取决于您计算单个 URL 还是仅计算域,否则对于 google、facebook 等网站,您将获得太宽的行。

    【讨论】:

    • 小心使用 SASI 链接,上面写着“注意:DSE 中的 SASI 索引是实验性的。DataStax 不支持生产中的 SASI 索引。”
    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    相关资源
    最近更新 更多