2015-12-15 23 views
1

我在我的Cassandra表中有一個像'address'這樣的文本字段。我想根據「地址」字段中的某些文本(如城市或街道名稱)搜索記錄。基於文本的使用CQL的記錄選擇

例如:我的地址是'House No. 18,Shehzad Colony,M.D.A. Chowk Lahore'。在這裏,我想搜索具有字符串'M.D.A.'的一部分的記錄。 Chowk Lahore'在地址欄中。

我該如何使用CQL shell來做到這一點。任何人都可以指導我...

感謝...

回答

1

真的是沒有辦法做到這一點的最箱。在卡桑德拉,你需要設計你的表來適應你的查詢模式。因此,如果按城市(或其他)搜索地址是您需要支持的模式,那麼有幾種方法可以執行此操作。

您可以通過city創建一個新的查詢表,分區:

CREATE TABLE userAddressesByCity (
    userID uuid, 
    firstName text, 
    lastName text, 
    street text, 
    city text, 
    province text, 
    postalCode text, 
    PRIMARY KEY (city,userID)); 

此表結構將支持city查詢作爲分區鍵,並且它還具有userID作爲聚集鍵以確保唯一性。

如果您使用的是地址,一個有用的技巧是創建一個User Defined Type(UDT)。如果要將用戶地址存儲在單個列中,UDT很有用。但是您仍然希望創建專門設計的表格,以便根據您需要的列提供查詢。

注:可以嘗試一個表,並在其中一列創建一個輔助指標,但二級指標在規模表現不佳,所以我不建議。