PostgreSQL 在 SmartListing Gem 中使用全文搜索进行分组和搜索时出错

伊芙琳·庞塞

我在 rails 应用程序中使用带有 postgresql 的 smartlisting gem。该表显示了关联的元素结果列表,在某些情况下元素可以重复,但我只需要在表中显示该元素一次,但是当我向活动记录添加 DISTINCT 或 uniq 时,它会转换为数组和 smartlisting 显示和错误。然后我尝试使用一个小组来解决它,它有效!但是当我尝试使用 pg_scope 进行全文搜索时,pg 查询崩溃了。这里的代码:

class Prospect < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search_by_name,
                  against: [:name, :father_last_name, :mother_last_name],
                  associated_against: { user: [:first_name, :father_last_name,
                                               :mother_last_name] },
                  ignoring: :accents

  has_many :projects, through: :project_prospects, dependent: :destroy
  .
  .
  .
class User < ActiveRecord::Base
  has_many :project_prospect
  has_many :projects, through: :user_projects, dependent: :nullify
end

查询

search = User.find(id).prospects.select("prospects.*").group("prospects.id")
search = search.search_query("Say my name") if search_full_text.present? 

该组致力于删除活动记录中的重复项,但是当需要全文搜索时,我收到下一个错误

PG::GroupingError: ERROR:  column "pg_search_ece0055f6ad1de91cd168e.rank" must appear in 
the GROUP BY clause or be used in an aggregate function 

LINE 1: ...168e.pg_search_id GROUP BY prospects.id  ORDER BY pg_search_...

伊芙琳·庞塞

经过几个小时的搜索,这个问题的唯一解决方案是在全文搜索后创建组,并在 SELECT 的查询中添加一个名为“rank”的变量,如下所示:

search = User.find(id).prospects
if search_full_text.present? 
    search = search.search_query("Say my name")
                   .select("prospects.*").group("prospects.id, rank")
else
    search = search.select("prospects.*").group("prospects.id")
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用TypeOrm进行Postgresql全文搜索

Django / PostgreSQL全文搜索-在AWS RDS PostgreSQL上使用SearchVector和SearchVectorField时,搜索结果不同

设置PostgreSQL连接时,PG Ruby Gem是否使用pgpass?

在Postgresql上使用部分字符串进行全文搜索

PostgreSQL全文搜索缩写

在开发环境中通过Octopus gem进行Rails Postgresql复制

Ruby 2.6.5和PostgreSQL pg-gem分段错误

Gem :: Ext :: BuildError:错误:无法构建gem本机扩展。PostgreSQL和ROR

pg_search gem和全文搜索排名设置

Rails + PostgreSQL - 使用全文搜索的多个关键字搜索

PostgreSQL(全文搜索)vs ElasticSearch

PostgreSQL与全文搜索完全匹配

精确词全文搜索 postgresql

postgresql全文搜索查询太慢

通过Rails和pg gem插入PostgreSQL服务器时,“令牌“-”无效”

在PostgreSQL上进行全文搜索的键集分页

在json文档上进行postgresql全文接近(`<->`)搜索

在Ruby on Rails和PostgreSQL中使用IN运算符进行不区分大小写的搜索

Postgresql和.Net Core 2.1中的全文搜索问题

即使同时安装了Home Brew和App,也不会安装PostgreSQL的Rails gem

在PostgreSQL上使用SQLAlchemy创建全文搜索索引

Ruby Gemfile无法添加PostgreSQL gem

无法在Mac上安装Postgresql Gem

Rails 5-Geocoder Gem,使用多个参数进行搜索

在PostgreSQL LTree中使用多个参数搜索

PostgreSQL全文搜索找不到“andy”

Postgresql全文搜索令牌生成器

在 PostgreSQL/SQLAlchemy 中加速 JSONB 全文搜索

PostgreSQL全文搜索西班牙语字符Ñ