首页 > 解决方案 > pg_search gem 返回重复项

问题描述

我正在使用pg_search gem在模型中进行搜索,并注意到某些搜索返回相同结果的重复。

class Client < ActiveRecord::Base
    include PgSearch::Model
    pg_search_scope :client_search, 
        against: [:name, :mindbody_id, :phone, :unique_mb], 
        associated_against: {
            address: [:phone, :street],
            user: [:email],
            location: [:name]
        },
        using: { 
            tsearch: { 
                prefix: true 
            }
        }
   ...
end

当我搜索时Client.client_search("abc"),我的结果数组包含相同的Client多次。每个条目都有相同的 ID,结果似乎无法区分。

知道为什么结果重复吗?

标签: ruby-on-railspostgresqlpg-search

解决方案


您需要将against零件移动到associated_against相关模型上的搜索列中。

pg_search_scope :client_search,
  associated_against: {
    client:   [:name, :mindbody_id, :phone, :unique_mb],
    address:  [:phone, :street],
    user:     [:email],
    location: [:name]
  },
  using: { 
    tsearch: { 
      prefix: true 
    }
  }
...

推荐阅读