acts_as_ferret - 如何将搜索限制为少量字段?

时间:2012-01-13 17:16:56

标签: ruby-on-rails ruby ferret acts-as-ferret

我有一个模型学校,对10或12个不同的索引进行了雪貂索引。

在一个特定的搜索中,我想只返回与以下字段之一匹配搜索词的学校:["name", "postcode", "urn"](urn是一种uid类型的字段)

例如,搜索“格兰奇”应该返回名称中有“格兰奇”的学校但不返回在其地址中有“格兰奇”的学校(除非它当然也在他们的名字中)。

如果只有一个字段(例如名称),我可以通过

实现
School.find_with_ferret("name:#{term}")

但是,我无法弄清楚如何使用字段列表来完成此操作。我以为我可以使用“或”语法,比如

School.find_with_ferret("name:#{term} || postcode:#{term} || urn:#{term}")

School.find_with_ferret("name:#{term} or postcode:#{term} or urn:#{term}")

但这些都不起作用。有人知道怎么做吗?谢谢,最大

2 个答案:

答案 0 :(得分:0)

来自acts_as_ferret文档:

ActsAsFerret::define_index( 'my_index',
                            :models => {
                              SomeModel => {
                                :fields => {
                                  :name => { :boost => 4, :store => :yes, :via => :ferret_title },
                                  :foo => { :store => :no,  :index => :untokenized },
                                  :baz => { :store => :yes, :via => :ferret_content }
                                }
                              }
                            } )

请注意“字段”定义

https://github.com/jkraemer/acts_as_ferret

答案 1 :(得分:0)

如果有人用同样的问题搜索到这个问题,我找到了答案(在雪貂文档中,doh)。

School.find_with_ferret("name|postcode|urn:#{term}")