【问题标题】:Fluentcassandra Filter ProblemFluentcassandra 过滤器问题
【发布时间】:2011-08-04 14:48:35
【问题描述】:

我是 FluentCassandra 和 Cassandra 的新手。

我在过滤某个值范围内的数据时遇到问题。在我看来,我可以使用通用列表来过滤结果,但我不知道怎么做?!

在 MSSQL 中,我使用它(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();

也许有人可以帮助我?!

谢谢 卡梅罗

【问题讨论】:

    标签: c# cassandra fluentcassandra


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢 jbellis。我将测试 Solandra API。
    【解决方案2】:

    正如 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-07-16
      • 1970-01-01
      • 2012-12-08
      • 2010-09-20
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多