使pg_search返回前缀和后缀

时间:2015-06-11 20:32:23

标签: ruby-on-rails postgresql ruby-on-rails-4 pg-search

我在Rails 4.2中使用pg_search gem来搜索模型中的名称。我有以下内容:

pg_search_scope :search_for_dashboard,
    lambda { |q|
      {
        against: [:name, :email, :description],
        using: {
          tsearch: {
            prefix: true
          }
        },
        ignoring: :accents,
        query: q
      }
    }

如果我输入adAd,我会收到'Adnan'和'Adrian'的结果。我想要的是,如果我输入an,我也会得到相同的结果。或者如果我输入dnan,我会得到'Adnan'。这可能与pg_search有关吗?

1 个答案:

答案 0 :(得分:4)

我是pg_search的作者。

使用postfix搜索工作的一种方法是使用trigram搜索而不是tsearch。 Trigram搜索对字符串的任何部分起作用。

或者,可以为tsearch添加一个与postfix类似的prefix选项,但这需要为gem添加新功能。