ruby-on-rails - 推荐需要 : Rails, Postgres 和模糊全文搜索

标签 ruby-on-rails postgresql full-text-search levenshtein-distance n-gram

我有一个带有 Postgres 后端的 Rails 应用程序。

我需要添加全文搜索,这将允许基于 Levenshtein 距离或其他类似指标的模糊搜索。添加词法分析器/词干分析器必须处理非英语单词的事实(在词法分析时关闭与语言相关的功能就可以了,不要混淆目标语言,因为目标语言可能包含被英语引擎认为无关紧要的有意义的单词).

我猜 Postgres 的 tsearch 不会在这里应用,因为它没有模糊搜索——如果我错了请纠正我。

后端和插件的可能组合是什么?它更喜欢对基础设施添加较少的解决方案(例如,如果 Postgres 可以有模糊的 fts,为什么要使用外部 Lucene); OTOH,所涉及的 Rails 插件的质量也很重要。

你会推荐什么?

更新:似乎我需要基于 n-gram 的指标而不是 Levenshtein。

最佳答案

Rails + Postgres + Solr + Sunspot

Solr基于 Lucene,因此您可以利用 Lucene 的所有功能。 Sunspot是 Solr API 的优秀 Ruby 包装器。 Sunspot 和 Solr 与 Rails 和 PostgreSQL 配合得很好,不到一个月前我在一个项目中使用了它。

关于ruby-on-rails - 推荐需要 : Rails, Postgres 和模糊全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1889981/

相关文章:

ruby-on-rails - 如何在 HAML 中使用 if 语句来控制标记类字符串?

ruby-on-rails - Ruby on Rails with Faye,如何向特定订阅者广播数据

ruby-on-rails - RoR/Ruby 从嵌套数组中删除 nil 元素

Mysql查询标签搜索具有相关性

SQL 包含 - 仅在开始时匹配

ruby-on-rails - 503 : Instagram is rate limiting your requests

postgresql - 如何将集合返回函数的输出插入到表中

database - 列出 PostgreSQL 数据表中的所有条目

sql - COALESCE 类型 jsonb 和 boolean 无法匹配

sqlite - 有效匹配索引 SQLite 字段的第一个字符