我在 pg_search 的 google 组上发布了这个查询:
https://groups.google.com/forum/?fromgroups#!topic/casecommons-dev/3tbCthkDHg0
但没有回复,所以我将其发布在 StackOverflow 上。我的问题是:在以下情况下使用 pg_search gem 时我应该创建 GIN 类型索引吗?
我的搜索仅限于使用 pg_search_scope 在单个模型中进行搜索。
这是一个具体的例子:
class Scenario < ActiveRecord::Base
...
include PgSearch
pg_search_scope :search, :against => [:name, :compute_ngls],
:using => { :tsearch => {:dictionary => "english"} }
def self.text_search(query)
if query.present?
search(sanitize(query))
else
scoped
end
end
...
end
text_search 方法的调用如下:
scenarios = scenarios.text_search(params[:sSearch])
我在某些列上只有常规的 btree 索引,例如 :name 。我没有 gin 或 gist 索引。我的问题是:我应该明确创建这些索引吗?如果是,那么哪种类型和哪些列?你能给我创建这些索引的语法吗?