Fluentcassandra过滤问题

时间:2011-04-13 10:57:37

标签: c# cassandra fluentcassandra

我是FluentCassandra和Cassandra的新人。

我有一个问题是从一系列值中过滤数据。在我看来,我可以使用通用列表来过滤结果,但我不知道如何?!

在MSSQL中,我使用它(SELECT * FROM TABLE WHERE Row1,如'%search%')。

CassandraSuperColumnFamily<UTF8Type, UTF8Type> familyname= db.GetColumnFamily<UTF8Type, UTF8Type>("Messages");
var results= familyname.Get("key")
                .Take(5)
                .FirstOrDefault()
                .AsDynamic();

也许有人可以帮助我?!

由于 calimero

2 个答案:

答案 0 :(得分:2)

搜索子字符串需要低效的顺序扫描。 Cassandra并不那么容易,因为这通常是错误的做法:

  • 如果您想要全文搜索,则应使用Solandra
  • 如果你想进行分析性查询,你应该在Hadoop之上使用Pig或Hive,它将在整个集群中并行化工作

如果您绝对必须进行非并行seq扫描,则必须手动翻页并检查C#代码中的子字符串。

答案 1 :(得分:1)

jbellis说,现在支持Cassandra 0.7及更高版本的列名扫描。要扫描特定值的列名,您可以执行以下操作:

var results = familyname.Get(startKey: "key", keyCount: 30, family => family["last_name"] == "Smith")
    .Take(5)
    .FirstOrDefault()
    .AsDynamic() 

上面的代码将从指定的密钥开始,并扫描下一个30个密钥,以查找名称为“last_name”且值为“Smith”的列。