gpt4 book ai didi

ruby-on-rails - Rails、Soulmate、Redis 删除记录

转载 作者:IT王子 更新时间:2023-10-29 06:15:46 24 4
gpt4 key购买 nike

我使用 Soulmate 来自动完成搜索结果,但是我希望能够在一段时间后删除记录,这样它们就不会再次出现在搜索字段中。用 Soulmate 重新加载列表似乎有点老套和不必要。

我已经使用json来加载并且我有一个唯一的记录“id”

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

如何从 Redis 中删除该记录,使其不再出现在搜索结果中?

最佳答案

使用 redis-cli 命令直接从 Redis 执行此操作并非易事。查看soulmate代码,数据结构如下:

  • 包含所有前缀的 soulmate-index:[type] 集合

  • 一个 soulmate-data:[type] 散列对象,包含 id 和 json 对象之间的关联。

  • 每个前缀,一个 soulmate-index:[type]:[prefix] 排序集(带有分数和 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

关于ruby-on-rails - Rails、Soulmate、Redis 删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17366735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com