高度なUltrasphinx:タグとフィルター

RailsとRailsの優れた検索エンジンsphinxの統合についてすでに書いたhabr
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)
  1. Copy Source | Copy HTML is_indexed :fields => [ 'title' ,"body"], : include => UltrasphinxHelpers::include_tags_configuration(self)


次の例を考えてみましょう。

Copy Source | Copy HTML
  1. クラスの記事
  2. belongs_to: ユーザー
  3. is_indexed:fields => ["name"、 "body"、 "user_id"] ,: include => UltrasphinxHelpers :: include_tags_configuration(self)
  4. 終わり
  5. Ultrasphinx :: 検索 new (:query => "ruby")#フィールド「name」または「body」に単語「ruby」、またはタグ「ruby」を含むすべてのレコードが検索されます


1つのフィールドのみで検索する場合:
Copy Source | Copy HTML
  1. Ultrasphinx :: 検索 new (:query => "tag:ruby")#rubyタグでタグ付けされたオブジェクトのみを返します
  2. Ultrasphinx :: 検索 new (:query => "name:* sphinx")#名前でのみ検索します。名前にsphinxという接尾辞を持つ単語を含むすべてのものが存在します


ステップ#2:特定のエントリ間でのみ検索する



そして最後に、友人の記事の中だけを検索したい場合:
Copy Source | Copy HTML
  1. friends_ids = current_user.friends.map(&:id)#[1、2、5、6、9、12]
  2. Ultrasphinx ::検索。 new (:query => "* sphinx" 、:filters => {:user_id => friends_ids})


_________
テキストはHabraで準備されます

Source: https://habr.com/ru/post/J54636/


All Articles