Indexing 如何在Cassandra 2.1.5中查询索引中包含的内容

Indexing 如何在Cassandra 2.1.5中查询索引中包含的内容,indexing,cassandra,keyword,contains,cql3,Indexing,Cassandra,Keyword,Contains,Cql3,有一个具有以下定义的table book。 图书名称将存储在列名中- 属性将是一个映射,其中包含authorname、发布年份等属性 CREATE TABLE book ( bookid uuid PRIMARY KEY, createdat timestamp, createdon timestamp, description text, attributes map<text, text>, name text ) CREATE I

有一个具有以下定义的table book。 图书名称将存储在列名中- 属性将是一个映射,其中包含authorname、发布年份等属性

CREATE TABLE book (
    bookid uuid PRIMARY KEY,
    createdat timestamp,
    createdon timestamp,
    description text,
    attributes map<text, text>,
    name text
) CREATE INDEX bookbyname ON project (name);
CREATE TABLE book(
bookid uuid主键,
创建日期时间戳,
createdon时间戳,
说明文字,
属性映射,
名称文本
)在项目(名称)上创建索引bookbyname;
问题-应该开发一个查询,从UI上的通用搜索运行,该搜索将提供一个字符串。该字符串应该在attributes列和name上查询[CONTAINS]


对于属性,因为它是一个映射,所以它支持CONTAINS关键字。但是,如何对索引执行包含查询?在本例中,bookbyname(name)字段。

Cassandra不支持使用CONTAINS或LIKE运算符匹配部分字符串。您应该研究诸如或之类的解决方案,这些解决方案在Cassandra之上提供搜索功能

为什么不使用简单的equals运算符作为名称<代码>其中name=“…”?是的,这就是我目前正在做的。但是如果我必须支持通配符搜索,比如“项目a”。。我需要检索包含项目a的所有项目。。因此我需要使用CONTAINS,我还想指出,您的
name
列与
bookid
具有相同的基数。高基数列上的二级索引不会很好地执行。如果你真的需要用书名查询,你应该考虑建立一个<代码> BooByNAME< /COD>查询表。这并不能解决您的主要问题,但它会使您在以后的性能问题中省去一些麻烦。谢谢Stefan。我将查看Stargate,并检查它是否为CONTAINS或LIKE操作符提供选项。