【问题标题】:pg_search gem returns duplicatespg_search gem 返回重复项
【发布时间】:2020-01-27 13:10:56
【问题描述】:

我正在使用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,结果似乎无法区分。

知道为什么结果会重复吗?

【问题讨论】:

  • 问题是有问题的 client 有 5 个 addresses,而他们应该只有 1 个导致重复。

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


【解决方案1】:

您需要将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 
    }
  }
...

【讨论】:

  • 进行更改后出现错误:NoMethodError (undefined method 'table_name' for nil:NilClass)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
相关资源
最近更新 更多