【发布时间】:2016-08-02 01:13:26
【问题描述】:
我有一个包含大约 150 万条记录的 Postgres 数据库。在我的 Ruby on Rails 应用程序中,我需要搜索 statement_text 字段(可以包含 1 到数百个单词)。
我的问题:我知道我可以使用pgSearch gem 来创建像search_all_words 或search_any_words 这样的范围,但我不确定确保只有完全匹配的记录的最有效方法是什么 在结果集中返回。
也就是说,如果我搜索“教皇弗朗西斯”,我希望它只找到连续且顺序相同的这两个词(而不是说,“教皇名叫弗朗西斯”)。
到目前为止,我刚刚将 GIN 索引与 ILIKE 结合起来进行精确匹配搜索。但是考虑到 GIN 索引在每条记录中基本上都由storing the exact position of a word 起作用,难道不应该有更有效的(非ILIKE)方法来确保搜索词与字段完全匹配吗?
【问题讨论】:
标签: ruby-on-rails postgresql full-text-search text-normalization