Rails + Sphinx =? パートI
RailsとSphinx。
この記事では、 Ultrasphinxプラグインの追加機能についてお話します。
ステップ#1:タグで検索する
UltrasphinxHelpersモジュールから次のコードを取り出して、「lib / ultrasphinx_helpers.rb」に配置します。
モデルでは次のように記述します。
Copy Source | Copy HTML is_indexed :fields => [ 'title' ,"body"], : include => UltrasphinxHelpers::include_tags_configuration(self)
次の例を考えてみましょう。
Copy Source | Copy HTML
- クラスの記事
- belongs_to: ユーザー
- is_indexed:fields => ["name"、 "body"、 "user_id"] ,: include => UltrasphinxHelpers :: include_tags_configuration(self)
- 終わり
- Ultrasphinx :: 検索 new (:query => "ruby")#フィールド「name」または「body」に単語「ruby」、またはタグ「ruby」を含むすべてのレコードが検索されます
1つのフィールドのみで検索する場合:
Copy Source | Copy HTML
- Ultrasphinx :: 検索 new (:query => "tag:ruby")#rubyタグでタグ付けされたオブジェクトのみを返します
- Ultrasphinx :: 検索 new (:query => "name:* sphinx")#名前でのみ検索します。名前にsphinxという接尾辞を持つ単語を含むすべてのものが存在します
ステップ#2:特定のエントリ間でのみ検索する
そして最後に、友人の記事の中だけを検索したい場合:
Copy Source | Copy HTML
- friends_ids = current_user.friends.map(&:id)#[1、2、5、6、9、12]
- Ultrasphinx ::検索。 new (:query => "* sphinx" 、:filters => {:user_id => friends_ids})
_________
テキストはHabraで準備されます