Repolode
ankane

ankane/searchkick

ElasticsearchまたはOpenSearchを使って、Active RecordやMongoidのモデルに高機能な全文検索を追加するRuby on Rails向けライブラリ。

スター
6,720
フォーク
761
未解決の Issue
10
最終コミット
10 日前

これは何?

Searchkickは、Active RecordやMongoidのモデルをElasticsearchまたはOpenSearchに接続するRuby gemです。モデルに1行宣言するだけで、全文検索を追加できます。語幹処理、特殊文字や余分な空白への対応、スペルミスの許容、カスタム同義語を備えており、「tomatoes」の検索で「tomato」が、「zuchini」の検索で「zucchini」が見つかります。

クエリには、whereによるフィルタリング、並べ替え、ページネーション、ブースト、集計、ハイライト、オートコンプリート、サジェスト、地理空間検索に対応した、メソッドチェーン形式のSQL風インターフェースを使えます。インデックス作成は同期、非同期、Redisベースのキュー経由、または手動で実行でき、並列で再インデックスしてダウンタイムを回避できます。

SearchkickはElasticsearch 8と9、OpenSearch 2と3に対応しています。ユーザーごとに検索をパーソナライズでき、Searchjoyのコンバージョンデータを使って調整できます。

主な機能

  • 01語幹処理、スペルミスへの対応、カスタム同義語を標準でサポート
  • 02where、order、limit、offsetを使ったSQL風のメソッドチェーン形式のクエリ
  • 03オートコンプリート、「もしかして」サジェスト、ハイライト
  • 04集計、フィールド・新しさ・距離に基づくブースト、ユーザーごとの検索結果
  • 05地理空間検索と地理形状検索
  • 06非同期、キュー経由、並列処理によるダウンタイムなしの再インデックス

ユースケース

  • RailsのECサイトやカタログアプリに、商品やコンテンツの検索機能を追加する
  • Active RecordまたはMongoidの大規模なモデル向けにオートコンプリートを構築する
  • 検索結果に集計を使ったファセットフィルタリングを提供する
  • レストランや店舗向けの位置情報ベースの検索を実装する

クイックスタート

  1. 1

    HomebrewでOpenSearchをインストールして起動する

    brew install opensearch && brew services start opensearch
  2. 2

    GemfileにsearchkickとElasticsearchまたはOpenSearchのクライアントを追加する

    gem "searchkick"
  3. 3

    モデルにsearchkickを追加し、そのデータをインデックスする

    Product.reindex

使う前に知っておきたいこと

  • ElasticsearchまたはOpenSearchサーバーが起動している必要があります。
  • Elasticsearch 7とOpenSearch 1では、旧バージョンの5.5.2が必要です。

トピック

よくある質問

searchkick とは?
ElasticsearchまたはOpenSearchを使って、Active RecordやMongoidのモデルに高機能な全文検索を追加するRuby on Rails向けライブラリ。 Searchkickは、Active RecordやMongoidのモデルをElasticsearchまたはOpenSearchに接続するRuby gemです。モデルに1行宣言するだけで、全文検索を追加できます。語幹処理、特殊文字や余分な空白への対応、スペルミスの許容、カスタム同義語を備えており、「tomatoes」の検索で「tomato」が、「zuchini」の検索で「zucchini」が見つかります。
searchkick は無料で使えますか?ライセンスは?
searchkick は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
searchkick は今もメンテナンスされていますか?
活発にメンテナンス中。searchkick の最終コミットは 2026年10月27日 です。
searchkick は何に使えますか?
RailsのECサイトやカタログアプリに、商品やコンテンツの検索機能を追加する Active RecordまたはMongoidの大規模なモデル向けにオートコンプリートを構築する 検索結果に集計を使ったファセットフィルタリングを提供する レストランや店舗向けの位置情報ベースの検索を実装する
searchkick のインストール方法は?
HomebrewでOpenSearchをインストールして起動する: brew install opensearch && brew services start opensearch GemfileにsearchkickとElasticsearchまたはOpenSearchのクライアントを追加する: gem "searchkick" モデルにsearchkickを追加し、そのデータをインデックスする: Product.reindex
searchkick はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ankane/searchkick

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

Rails、Sinatraなどの各種フレームワークで、OFFSET、KEYSET、検索、カレンダー方式のページネーションに対応する、プレーンなRuby向けの汎用ライブラリ。

4998447RubyMIT活発にメンテナンス更新 14 時間前