如何启用 :tsearch 字典进行 pg_search 多重搜索?

2024-03-21

我正在将 pg_search 添加到 Rails 应用程序中。我正在按照 github 上的说明进行操作铁路广播公司 http://railscasts.com/episodes/343-full-text-search-in-postgresql,但我遇到了问题。

我正在设置多模型搜索,并且有一个基本的实现工作。但我想扩展 pg_seach 以使用它的英语词典。

我已经有一个初始化程序:

PgSearch.multisearch_options = {
  :using => [:tsearch,:trigram],
  :ignoring => :accents
}

所以,从我读到的内容看来,添加字典应该像这样简单

PgSearch.multisearch_options = {
  :using => [:tsearch => [:dictionary => "english"],:trigram],
  :ignoring => :accents
}

但是当我启动我的服务器时

...config/initializers/pg_search.rb:2: syntax error, unexpected ']', expecting tASSOC (SyntaxError)
  :using => [:tsearch => [:dictionary => "english"],:trigram],

我尝试过用方括号替换大括号,以及我能想到的所有其他语法排列,但没有运气。

这里正确的语法是什么?为什么我的尝试无效,因为我遵循了范围搜索的语法?


您发布的内容不是有效的 Ruby 语法。

你想要这样的东西:

PgSearch.multisearch_options = {
  :using => {
    :tsearch => {
      :dictionary => "english"
    },
    :trigram => {}
  },
  :ignoring => :accents
}

原因是如果你想要有键值对,你必须使用哈希。所以本质上,pg_search 允许两种语法:

:using => someArray # such as [:tsearch, :trigram]

这意味着“使用 tsearch 和 trigram,两者都具有默认选项”

or

:using => someHash # such as {:tsearch => optionsHash1, :trigram => optionsHash2}

这意味着“将 tsearch 与 optionsHash1 中的一些选项一起使用,并将 trigram 与 OptionsHash2 中的一些选项一起使用”

如果有什么我可以澄清的,请告诉我。这是非常基本的 Ruby 语法,但我知道 pg_search 接受两种格式的事实可能会让那些不熟悉的人感到困惑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何启用 :tsearch 字典进行 pg_search 多重搜索? 的相关文章

随机推荐