向 Rails 5 中的 Postgres 表添加三元索引

Pow*_*ers 1 postgresql ruby-on-rails pg-trgm

Postgres 允许使用pg_trgm 模块使用三元组索引。

这是他们在“索引支持”部分提供的示例代码:

CREATE TABLE test_trgm (t text);
CREATE INDEX trgm_idx ON test_trgm USING GIST (t gist_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

这是我想出的迁移:

class AddTitleTrigramIndexToContacts < ActiveRecord::Migration[5.1]
  def change
     enable_extension 'pg_trgm'
     execute "CREATE INDEX contacts_title_trigram_ix ON contacts USING GIST (title gist_trgm_ops);"
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来添加此迁移?我什至不确定这是否正确。

ka8*_*725 6

根据这个单元测试,可以像这样添加索引:

add_index :contacts, :title, using: :gist, opclass: {title: :gist_trgm_ops}
Run Code Online (Sandbox Code Playgroud)