Search kick GemはElasticsearchの上で動作するRuby gemで、Railsに適した方法で簡単に検索を行うことができます。さらに、分析、オートコンプリート、パーソナライズされた結果などの機能を追加することができます。
Searchkickは、ユーザーが何を求めて検索しているかを把握します。より多くのユーザーが検索すればするほど、Searchkickはさらに輝きを増し、結果も向上します。それはデザイナーにとって有益であり、ユーザーにとっては超自然的です。ステミング、特殊文字、余分な空白、スペルミス、カスタム同義語を処理します。
使い始めるには、Elasticsearchがご自宅のコンピュータにインストールされていることを確認してください。お使いのオペレーティングシステムによって、インストール方法は若干異なります。
それができたら、以下をGemfileに追加してbundle installを実行することで、searchickをRailsアプリケーションに追加してインストールします。
gem 'searchkick'両方をインストールして準備ができたら、アプリケーションで検索できるようにしたいモデルを指定する必要があります。searchkickをモデルファイルに追加するだけで動くようになります。次に、Elasticsearch が正しく動作するように、モデルのインデックスを再作成する必要があります。ターミナルで
rake searchkick:reindex:allsearchkickを使った検索は至って簡単です。基本的にはYourModel.searchを実行し、検索パラメータと追加したいフィルタを指定します。例えば、より複雑な検索の一つは以下の通りです: offers = Offer.search params[:search]、 page: params[:page], per_page:10, order:{starttime: :desc}、 fields:[offer_name: :word_start}, {offer_request_name: :word_start}:price]、 where:{ starttime:{ gte:DateTime.strptime(params[:fromdate], '%m/%d/%Y')、 lte:gte: DateTime.strptime(params[:todate], '%m/%d/%Y') } } この検索では、ユーザーの検索クエリをparams[:search]で受け取り、以下の条件でレッスンを検索します: ページネーション: この部分のコードは、検索結果を10ページに分けて返す。このメソッドを使って、各ページに必要なリスト項目の数を変更できます。これはwill_paginateとkaminariの両方で動作します。 注文する: 順序を指定します:{starttime: :desc}- このメソッドは、結果をどの順番で返すかを決定します。これを使うことで、結果の表示を昇順または降順に変更することができます。この場合、最新の結果を最初に返します。 フィールド [offer_name: :word_start},{offer_request_name: :word_start} :price]- このメソッドでは、ユーザーがオファー名、オファータイプ、またはオファー価格で検索できるようにしました。word_startメソッドにより、ユーザーはオファー名の最初の部分のみを入力しても、検索結果にオファーを表示することができます。例えば、"ch "と検索すると、"chat "と表示されます。word_middleとword_endも使用できます。長いテキストの場合、searchkickはtext_start、text_middle、text_endもサポートしています。 どこでだ: 開始時間{gte:DateTime.strptime(params[:fromdate], '%m/%d/%Y'), lte:DateTime.strptime(params[:todate], '%m/%d/%Y')}。これにより、ユーザーはアプリケーションで簡単にフィルタを使うことができます。私たちは日付の間でフィルタをかけたかったので、オファーを見つけるためにstarttimeを使いました。 カスタム検索属性の設定 searchkickの最後の素晴らしい機能は、モデルに追加できるsearch_dataメソッドです。これにより、ユーザが検索できる属性を追加したり置き換えたりすることができます。これにより、カスタム検索パラメータを作成したり、モデルの関連付けに基づいて検索したりすることができます。以下は、私たちが実装したsearch_dataメソッドの一例です。 def search_data 属性.マージ( offer_request_name: offer_requests.map(&:name)、 ) 終わり 複数の指標 複数のインデックスを横断的に検索
Searchkick.search "search_query", index_name: [Offer, OfferRequest].私たちの Ruby on Rails 開発者 ここ レールカーマ はアプリケーションを作るだけでなく、現象を創造します。未来的な技術を駆使し、優れたアプリケーションを提供し、美しく魅力的なUI/UXを設計し、明確なフロントエンドを開発し、スケーラブルなアプリケーションを構築し、クラウド上で管理します。つまり、私たちのRuby on Rails開発者は、「あなたのアイデアに命を与える」のです。 以下のコメントまたは お問い合わせ お問い合わせはこちらまで。
カトネニ・ナガ・サイ・テジャスウィ
シニア ソフトウェア開発者