2

i'm new in FluentCassandra and Cassandra.

I have a Problem to filter data from a range of value. In my opinion i can use a Generic List to filter the result, but i don't no how?!

In MSSQL i use this (SELECT * FROM TABLE WHERE Row1 like '%search%').

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

Maybe some one can help me?!

Thanks calimero

4

2 回答 2

2

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

  • 如果你想要全文搜索,你应该使用 Solandra
  • 如果你想做分析查询,你应该在 Hadoop 上使用 Pig 或 Hive,这将使整个集群的工作并行化

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

于 2011-04-13T20:56:03.323 回答
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”的列。

于 2011-06-22T01:42:20.877 回答