gpt4 book ai didi

ruby-on-rails - 让用户订阅关键字的好方法是什么

转载 作者:可可西里 更新时间:2023-11-01 11:39:12 26 4
gpt4 key购买 nike

我有一个使用 Rails 4、PostgreSQL 并托管在 Heroku 上的 Rails 应用程序。该应用程序围绕以下模型展开:用户和文章。用户可以创建文章。一篇文章包含标题、描述、位置(纬度、经度)和图像。

我想添加一个通知系统,其工作方式如下:

  • 用户可以设置他们希望订阅的关键字列表。
  • 如果添加了包含他们的关键字之一的文章(在标题中,但可能及时在描述中),用户会收到通知。

以可扩展的方式实现它的最佳方法是什么?

在最简单的形式中,我可以创建一个名为关键字的模型,用于存储用户希望收到通知的关键字。然后在文章的创建操作中,检查标题(或描述)是否包含任何已保存的关键字。

这听起来不错,但一旦添加了任何合理数量的用户,它可能就会失败。

显然,后台任务可以解决问题,但直接在数据库上执行基本字符串包含听起来仍然是错误的。

也许我可以将标题和描述标记为索引并使用后台进程来处理繁重的工作?我听说 Postgres 有一些内置的文本搜索 - 这行得通吗?我可以使用像 Solr 或 Redis 这样的 Heroku 插件来处理这一切吗? (不必为附加组件付费是一个优势)。也许有人对相同的功能有更好的实现。

我知道我可以快速实现它,我只是想确保它的实现符合标准。

谢谢,布莱恩

最佳答案

我遇到过类似的问题。最慢的事情是进行不区分大小写的搜索。我建议您采用以下方法:让 TID 成为您存储标题的行的 ID;然后创建一个表,其中包含标题中每个小写单词的一行,以及相应的 TID。比您需要的是给定用户的单词和关键字之间的连接。您可以使用哈希索引加快此查询。

在我的例子中,没有一个 postgres 文本函数可用,因为它们的性能都很差。

PS 我们对大约 60000 个文档实现了全文搜索,因此您的情况可能会有所不同。

关于ruby-on-rails - 让用户订阅关键字的好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762466/

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