在我的密钥空间
posts = [
#key
'post1': {
# columns and value
'url': 'foobar.com/post1',
'body': 'Currently has client support FOOBAR for the following programming languages..',
},
'post2': {
'url': 'foobar.com/post2',
'body': 'The table with the following table FOOBAR structure...',
},
# ... ,
}
如何在Cassandra中创建类似查询以获取包含“FOOBAR”一词的所有帖子?
在SQL中是SELECT * FROM POST WHERE BODY LIKE '%FOOBAR%'
,但在Cassandra?
答案 0 :(得分:5)
有效执行此操作的唯一方法是使用全文搜索引擎,例如https://github.com/tjake/Solandra(Solr-on-cassandra)。当然,你可以手动使用相同的技术自己动手,但通常不需要这样做。
请注意,对于SQL数据库也是如此:除非您使用像postgresql的tsearch2这样的FTS扩展名,否则它们会将%FOO%转换为表扫描。
答案 1 :(得分:0)
您可以创建另一个列系列,其中键是域,值是原始列族中的键。这样您就可以直接引用特定域中的记录。
答案 2 :(得分:0)
Cassandra 3.4在CSQL中添加了对LIKE的支持。所以最后它本身就可以使用。