1
私は、postgresqlで全文検索を行うために、行にacts_as_tsearchプラグインを使用しています。acts_as_tsearchと多対多の関係を検索するSQL
彼らはここでは、マルチテーブル検索の例与える: http://code.google.com/p/acts-as-tsearch/wiki/ActsAsTsearchMethod
をしかし、唯一の1対多の関係をしていること。私はまた、ページ上のタグの多対多の関係(has_and_belongs_to_manyまたはhabtm)を検索するようにしています。しかし、私のSQLは十分に進んでいません。ここで
は、私がこれまで持っているものです:acts_as_tsearch :vectors => {
:fields => {
"a" => {:columns => ["pages.name"], :weight => 1.0},
"b" => {:columns => ["pages.description"], :weight => 0.2},
"c" => {:columns => ["tags.name"], :weight => 0.2}
},
:tables => {
:tags => {
:from => "tags INNER JOIN taggings ON tags.id = taggings.tag_id",
:where => "((taggings.taggable_type = 'Page') AND (taggings.taggable_id = ???.id) AND ((taggings.context = 'tags')))"
}
}
}
私は(私は???を置く場所)ページIDを参照するかどうかはわかりません。
ありがとうございました!
taggable_idの用途を説明できますか? – Andomar
良い質問、申し訳ありませんが私は説明していたはずです。それは多態的なので、taggable_idはタグを持つことができる任意のモデルを指します。この場合は、ページにはタグしかないのでpage_idと呼ばれることもありますが、どのモデルにもタグを付けることができるように多態性にしました。 基本的に、「タグ付け」テーブルはページとタグのIDを保持して多対多の関係に接続します。ご協力いただきありがとうございます! –