2

私は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();

多分誰かが私を助けることができますか?

ありがとう

4

2 に答える 2

2

サブストリングを検索するには、非効率的なシーケンシャルスキャンが必要です。Cassandraはそれを簡単にしません。なぜなら、それは通常、間違ったことだからです。

  • 全文検索が必要な場合は、Solandraを使用する必要があります
  • 分析クエリを実行する場合は、Hadoop上でPigまたはHiveを使用する必要があります。これにより、クラスター全体で作業が並列化されます。

どうしても非並列シーケンススキャンを実行する必要がある場合は、行を手動でページングし、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 に答える