2013-06-28 72 views
1

我使用靈魂伴侶來自動完成搜索結果,但是我希望能夠在一段時間後刪除記錄,以便它們不會再次出現在搜索字段中。用Soulmate重新加載列表看起來有點冒險和不必要。Rails,Soulmate,Redis刪除記錄

我已經使用JSON來加載和我有一個獨特的記錄「身份證」

{"id":1547,"term":"Foo Baar, Baaz","score":85} 

如何刪除從Redis的那個記錄,這樣它不會在搜索結果中再次顯示了?

回答

1

使用redis-cli命令直接從Redis執行操作並非易事。 綜觀知己代碼,該數據結構如下:

  • 一個知己指數:[式]組包含

  • 一個知己數據的所有前綴:含有[類型]哈希對象的id和json對象之間的關聯。

  • 每前綴,心心相印指數:【類型】:[前綴]排序設置(與得分和id)

所以要刪除一個項目,你需要:

Retrieve the json object from its id (you already did it) -> id 1547 
HDEL soulmate-data:[type] 1547 
Generate all the possible prefixes from "Foo Baar, Baaz" 
For each prefix: 
    SREM soulmate-data:[type] [prefix] 
    ZREM soulmate-index:[type]:[prefix] 1547 

也許從Ruby腳本直接調用Soulmate.Loader類中提供的remove方法會更容易,該腳本可以爲您自動執行所有操作。

https://github.com/seatgeek/soulmate/blob/master/lib/soulmate/loader.rb

+0

是的,我結束了使用Soulmates Loader class =) – Philip