ruby-on-rails - 什么数据库用于 15M 记录和快速搜索索引

标签 ruby-on-rails database postgresql solr

所以这是我在从事一个项目大约九个月后一直想知道的事情。

我们有一个 postgres 数据库,并在 rails 应用程序的 solr 之上使用 sunspot。

当我们决定使用 solr 时我不在场,所以我真的不知道我们为什么首先选择它。一切都适用于小型数据集,但真正痛苦的是在保存后重新索引每条记录。

这会让索引过时,我们最终会在延迟的作业中处理这些索引。这让我们暂时可以解决问题,但每次我们决定重新处理索引及其构建方式时,生产时间都超过 24 小时,这让我们的客户很生气。

我应该在这里指出,我们正在搜索最多 255 个字符的联系人字段。大多数只有 25 个字符。没有pdf文件或word文件等。

最终目标是进行快速搜索并进行一些自动完成搜索。我还希望我们对搜索进行模糊匹配。我想让 Bill Smith 匹配 BillSmith 和其他一些东西。

为此,我现在要在联系人模型上自定义构建索引的一部分。这行得通,但每次我的老板添加 Bill Smith 必须匹配 Bill-Smith 之类的要求时,我都需要重建索引。

这里有比 solr 更好的东西吗?不知有没有这个用途。最后,我希望搜索具有与谷歌相同的一些功能和速度。 (不要那么极端)但如果我需要索引,我需要快速重建索引。

这适用于在 30 个表中有大约 1500 万条数据库记录的 Rails 应用。

这里的任何指导都会很好,因为我们即将考虑放弃 solr。

编辑:另一个问题是您需要一个索引来进行快速搜索吗?难道 postgres 不能使用自己的索引来同样快速地获取东西吗?

最佳答案

Postgres 可以很好地处理全文搜索......

http://www.postgresql.org/docs/current/static/textsearch.html

请注意,如果您不喜欢内置规则,它允许使用各种词典:

http://www.postgresql.org/docs/current/static/textsearch-dictionaries.html

它还有丰富多彩的工具,比如八卦:

http://www.postgresql.org/docs/current/static/pgtrgm.html

关于ruby-on-rails - 什么数据库用于 15M 记录和快速搜索索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20997341/

相关文章:

postgresql - 在 A 列中搜索 B 列中的字符串匹配项

ruby-on-rails - Rails 3 缓存 - 是否可以根据特定模型更改使页面/操作缓存过期?

ruby-on-rails - 如何摆脱归因于 rails 关联的 n+1 查询?

ruby-on-rails - Faye 如何计算最大客户数

ruby-on-rails - 无法迁移数据库。 ActiveAdmin 和 Rails 4.0.2

sql - 如何在通用模式上对数据变量方差进行建模? SQL

database - 将多个 id 存储到一个表列中是一种不好的做法吗

postgresql - 如何使用 SQLAlchemy 使用配置创建 Postgres GIN 索引?

php - 我将如何组织数据以向用户发送许多电子邮件?

postgresql - QueryDSL GroupBy 和 Sum