徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2014年 5月
« 4月   6月 »
 123
45678910
11121314151617
18192021222324
25262728293031
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2014年5月12日(月曜日)

sunspot solr で全文検索。――続き

カテゴリー: - flyman @ 23時15分32秒
フィッシュ・アイは面白い。

Sunspot_solr で全文検索機能を実装する話は前に書いたが、単一のテーブルだけではなく関連するテーブルの中まで検索することも容易に出来る。

例えば、Question には 複数の Reply があったとする。以下のようなModelだ。

class Question < ActiveRecord::Base
 attr_accessible :question
 has_many :replies
end

class Reply < ActiveRecord::Base
 attr_accessible :question_id, :reply
belongs_to :question
end

このとき、次のように検索設定をする。

class Question < ActiveRecord::Base
 attr_accessible :question
 has_many :replies

 searchable do
  text :question
  text :reply do
   replies.map(&:reply)
  end
 end
end

Questionテーブルの"question"カラムだけでなく、
Replyテーブルの"reply"カラムでも全文検索が出来るようになる。
"text :reply do" の :reply は、実際のカラム名である必要は無い。
"replies.map(&:reply)" の方には、実際のカラム名を指定する。

設定が終わったらreindexしておく。
もし、検索実行時に"reply"カラムを検索対象から外したければ、

search = Question.search do
 keywords params[:query],
 :fields => [:question]
end
@questions = search.results

のように、:fields パラメータを指定すれば良い。
:fields を指定しないか、
 :fields => [:question, :reply]
のように両方を指定すれば、両方を対象に検索が実行される。


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/1011

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.014 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
テーマ選択

(4 テーマ)