【发布时间】:2010-07-06 04:36:37
【问题描述】:
我需要在 apache cassandra 上做这样的事情, SELECT * FROM mytable where address = "%indonesia%"
知道如何在 cassandra 上执行此操作吗?
【问题讨论】:
-
我希望这可能与列名有关...希望在未来的版本中可以实现
我需要在 apache cassandra 上做这样的事情, SELECT * FROM mytable where address = "%indonesia%"
知道如何在 cassandra 上执行此操作吗?
【问题讨论】:
它不支持开箱即用。您必须维护自己的索引。
我建议使用“超列索引”或结合范围查询使用顺序保留分区器(例如 org.apache.cassandra.dht.OrderPreservingPartioner)。
看看 Benjamin Black 关于 cassandra 和 index 的精彩演讲中的 the slides
【讨论】:
补充一下 Schildmeijer 所说的话,除非您做很多额外的工作,否则您可能不会在 Cassandra 中获得相当于“%indonesia%”通配符搜索的功能。 “indonesia%”或“%indonesia”(或“aisenodni%”)在您为此类搜索创建的特殊索引上使用范围查询会容易得多。 Schildmeijer 链接的幻灯片描述了如何在高层次上设置这种搜索。
如果您正在寻找存储在 Cassandra 中的文本块中的全文搜索,您可能会查看类似 Lucene 的东西来维护一个索引,该索引可用于对文本中的字符串进行某些类型的搜索。我对细节不太熟悉,但以下两个链接在这里可能会有所帮助:
【讨论】: