1

我正在使用 pg-search 在模型中进行搜索。我遇到的问题是,如果我搜索一个字段或另一个字段中的关键字,它可以工作,但是如果我输入我知道在我正在使用的 2 个字段中的关键字,它不会返回任何内容。

这是我的搜索

@providers = Provider.text_search(params[:query])

这是帮手

def self.text_search(query)
  if query.present?
    where("address @@ :q or conditions @@ :q", q: "%#{query}%")
  else
    scoped
  end
end

总结一下......如果我输入 2 个地址关键字(即:邮政编码和街道名称)或 2 个条件关键字(即:全新),它可以工作,但如果我在搜索字段中输入一个邮政编码和新的,它不会返回任何事物

这是查询

Provider Load (1.3ms)  SELECT "providers".* FROM "providers"  WHERE (address @@ '%new rancho%' or conditions @@ '%new rancho%')

编辑 我忘了发布 pg_search_scope

pg_search_scope :search, against: [:address, :conditions], using: { tsearch: { dictionary: "english", prefix: true, any_word: true} }
4

1 回答 1

3

在你的模型中尝试这样的事情

  include PgSearch

 pg_search_scope :search,  against: [:zipcode, :streetname], 
using: {tsearch: {prefix: true, any_word: true}}

  def self.text_search(query)
    if query.present?
      search(query)
    else
      scoped
    end
  end
于 2014-05-04T20:35:42.997 回答