所以这是我在从事一个项目大约九个月后一直想知道的事情。
我们有一个 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
它还有丰富多彩的工具,比如八卦:
关于ruby-on-rails - 什么数据库用于 15M 记录和快速搜索索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20997341/