2010-06-29 67 views
5

我需要做这样的事情在Apache Cassandra的, SELECT * FROM MYTABLE其中address = “%印度尼西亚%”是否有任何技巧在apache cassandra上进行通配符搜索?

任何想法如何做到这一点的卡桑德拉?

+1

我想这在某种程度上可能与列名做...希望这在未来的版本中成为可能 – 2012-01-07 04:40:42

回答

3

它不支持开箱即用。你必须维护你自己的指数。

我会推荐使用“Supercolumn index”或使用命令保留分区程序(例如org.apache.cassandra.dht.OrderPreservingPartioner)和范围查询。

采取从本杰明黑色的优秀谈论卡桑德拉和指数来看看the slides

1

我想补充一下Schildmeijer说,除非你做了很多额外的工作,你可能不会得到相当于在Cassandra中的“%indonesia%”通配符搜索。使用范围查询对您为此类搜索创建的特殊索引使用范围查询会更容易“印度尼西亚%”或“%印度尼西亚”(或“aisenodni%”)。 Schildmeijer链接的幻灯片描述了如何在高层建立这种搜索。

如果您要在存储在Cassandra中的文本块中寻找全文搜索,可以查看Lucene之类的内容以维护一个索引,该索引可用于对文本中的字符串执行某些类型的搜索。我不是太熟悉的细节,但以下两个链接,可能会在这里有所帮助: