需要建议:Rails,Postgres和模糊全文搜索

时间:2009-12-11 18:26:52

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

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

我需要添加全文搜索,这将允许基于Levenshtein距离或其他类似指标的模糊搜索。添加词法分析器/词干分析器必须使用非英语单词这一事实(可以在lexing时关闭与语言相关的功能,而不是弄乱目标语言,这可能会使英语引擎认为有意义的单词无关紧要)。

我认为Postgres的研究不适用于此,因为它没有模糊搜索 - 如果我错了,请纠正我。

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

你会推荐什么?

更新:好像我需要比Levenshtein更基于n-gram的指标。

3 个答案:

答案 0 :(得分:6)

Rails + Postgres + Solr + Sunspot

Solr基于Lucene,因此您可以利用所有Lucene功能。 Sunspot是Solr API的优秀Ruby包装器。 Sunspot和Solr都适用于Rails和PostgreSQL,我在不超过一个月之前将它用于一个项目。

答案 1 :(得分:3)

PostgreSQL附带一个名为pg_trgm的扩展名(在contrib /目录中)。根据我的经验,它太慢了(更像是概念验证实现),但对于您的应用程序,它可能会起作用。

答案 2 :(得分:0)

texticle为Postgres提供beta模糊搜索。