0

私は、10 または 12 の異なるインデックスでフェレット インデックスが付けられているモデルの学校を持っています。

ある特定の検索で、次のフィールドのいずれかで検索語に一致する学校のみを返したい: ["name", "postcode", "urn"] (urn は uid の種類のフィールドです)

たとえば、「grange」を検索すると、名前に「grange」が含まれる学校が返されますが、住所に「grange」が含まれる学校は返されません (もちろん名前にも含まれている場合を除きます)。

フィールドが1つしかない場合(名前など)、次の方法でこれを実現できます

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}")

しかし、これらはどちらも機能しません。誰でもこれを行う方法を知っていますか? ありがとう、マックス

4

2 に答える 2

0

act_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

于 2012-01-13T18:26:05.670 に答える
0

誰かが同じ問題でこれをグーグルで検索した場合、私は答えを見つけました(フェレットのドキュメントで、doh)。

School.find_with_ferret("name|postcode|urn:#{term}")
于 2012-11-26T12:08:04.697 に答える