Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为pg_搜索多搜索启用:t搜索字典?_Ruby On Rails_Pg Search - Fatal编程技术网

Ruby on rails 如何为pg_搜索多搜索启用:t搜索字典?

Ruby on rails 如何为pg_搜索多搜索启用:t搜索字典?,ruby-on-rails,pg-search,Ruby On Rails,Pg Search,我正在将pg_搜索添加到Rails应用程序中。我正在按照github上的说明进行操作,但是遇到了一个问题 我正在建立一个多模型搜索,我有一个基本的实现。但我想扩展pg_seach,使用它的英语词典 我已经有了一个初始值设定项: PgSearch.multisearch_options = { :using => [:tsearch,:trigram], :ignoring => :accents } 所以,从我读到的来看,添加措辞应该像 PgSearch.multisear

我正在将pg_搜索添加到Rails应用程序中。我正在按照github上的说明进行操作,但是遇到了一个问题

我正在建立一个多模型搜索,我有一个基本的实现。但我想扩展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_搜索允许两种语法:

:using => someArray # such as [:tsearch, :trigram]
这意味着“使用tsearch和trigram,两者都带有默认选项”

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


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

谢谢@nertzy。我可以发誓我尝试过这种语法,尽管我在我的问题中发布了一个不同的变体,试图遵循指导原则。仔细想想,实际上我可能省略了
:trigram
的空数组。不管怎样,它现在起作用了,谢谢你帮我找到这个!
:using => someHash # such as {:tsearch => optionsHash1, :trigram => optionsHash2}