- 更新日: 2014年5月14日
- Rails
Rails で全文検索を実装する資料まとめ
Rails アプリケーションで全文検索を実装するための調査を昨晩行ったので、リンク・URLをまとめておきます。Sunspot, Elasticsearch, Think Sphinx, Ransack あたりが候補になりました。
Sunspot(Solr)
- Apache Lucene – Apache Solr
- Rails – sunspot で全文検索をする(1) – そういうことだったんですね
- Railsでsunspot(solr)を使って全文検索 – Qiita
- Railsで検索を高速化するならこれで決まり!Sunspotで始めるSolr入門 | TechRacho
- Rails3.1で全文検索はSunSpotが楽ちんだった – 鶏肉がいいよね。
- Ruby on RailsとApache Solrで構築するドキュメント全文検索システムの開発|サイバーエージェント 公式エンジニアブログ
- 結局、Rails 3.2 で 大量のデータを検索する場合、Sunspot な Solr が一番 いい感じ。という面白くないオチ。 | JAM☆ぱん
- ASCIIcasts – “Episode 278 – Sunspotで全文検索”
- ビッグデータ処理の常識をJavaで身につける(1):検索エンジンの常識をApache Solrで身につける (1/4) – @IT
Sunspot は Ruby から全文検索システムである Apache Solr を使うためのライブラリ。Apache Solr は Java で書かれているので、動作には Java 環境のインストールが必要。日本語の情報がとても充実しているので、とっつきやすそうです。
Elasticsearch
- Elasticsearch.org Open Source Distributed Real Time Search & Analytics | Elasticsearch
- Elasticsearch.org Release The Clients! Ruby, Python, PHP, Perl | Blog | Elasticsearch
- Rails Elasticsearchを日本語対応させる – Qiita
- Elasticsearchとkuromojiでちゃんとした日本語全文検索をやるメモ – elasticsearch | GMOメディア エンジニアブログ
- 実践!Elasticsearch – Wantedly Engineer Blog
- Elasticsearchチュートリアル – 不可視点
- Hello! Elasticsearch. — Medium
- elasticsearchを全文検索サーバとして活用するなら読んでおきたい、6つのブログ記事をピックアップ(追記あり) – Y-Ken Studio
- MySQLユーザ視点での小さく始めるElasticsearch
- MySQLからelasticsearchへ、レコードをネスト構造化しつつ同期出来る fluent-plugin-mysql-replicator v0.4.0 を公開しました – Y-Ken Studio
- ElasticsearchでMySQLから取り込み時に配列として入れる – Qiita
- Implementing Elasticsearch on existing MySQL database on Rails – Stack Overflow
Elasticsearch は、Solr とともに人気のある全文検索システムで最近勢いがあります。Solr と同様 Apache Lucene をベースにしており、動作には Java 環境が必要。
Google トレンド: elasticsearch, solr
調査の際に読んだ Reddit スレッドでは、Elasticsearch のほうが支持されている模様でした。ただし、Solr に比べると日本語の情報源は格段に少なめです。ruby, python, php, perl 向けに公式ライブラリが公開されています。また、データ形式が json だったり、REST API から操作できたりするので馴染みやすい。MySQL からデータの流し込みもプラグインを使ってできるっぽい。私は、まずは Elasticsearch を試してみようと思います。
あと Rails 向けライブラリで tire というのが有名だったらしく、それ関連の情報が多くヒットするのだけど、tire は2013/9に retire とリネームして引退しているので注意。公式ライブラリを使ってねと Github に説明がありました。
Think Sphinx
Think Sphinx は、Github でスターが沢山付いているし英語圏で人気の模様。ただし、日本語の検索で難あり…との情報を見ました。また日本語ソースの情報が極端に少ないので断念しました。
Ransack
- #370 Ransack – RailsCasts
- Railsで複雑な検索条件を簡単に実装できるGem Ransack – 酒と泪とRubyとRailsと
- Rails – 検索用のgem「ransack」を使ってみる – Qiita
- Rails – Ransackのススメ – Qiita
- ransack という検索用の gem について – willnet.in
Ransack は ActiveRecord の拡張っぽい gem で、ActiveRecord と同様に通常 Rails で使う DB (MySQLやSQLiteなど) に対してSQLクエリを発行させて使う。Solr や Elasticsearch と違って Java を必要とせずに動作します。さっと資料に目を通したところ、Solr や Elasticsearch より遥かに簡単そうです。小さめのDBであればこれで十分そう。Elasticsearch ではまったら Ransack を試してみよう。サイズの大きいDB内のデータが対象の検索用途なので、速度がどうなるか分かりませんが。
全文検索システムの比較、ほか
- The Ruby Toolbox – Rails Search
- Best search gem : rails
- Solr vs ElasticSearch の話 – tatsuyaoiw.hatenablog.com
- 全文検索システムの比較 – Elasticsearch vs Solr vs Amazon CloudSearch
- Solr vs ElasticSearch – minghaiの日記
- Solr vs elasticsearch 類似文書検索 (日本語解析の設定) | Synergy LAB | シナジーマーケティング株式会社 R&D
- タムタムの日記 – elasticsearch勉強会 の参加メモ #elasticsearchjp
- Apache Solr vs ElasticSearch – the Feature Smackdown!
- SolrとElasticsearchの比較
- RubyでGroonga使って全文検索 – ラングバ
- RailsとMySQL5.6.xで全文検索をやってみた – リア充爆発日記
Github リポジトリ
Solr
https://github.com/sunspot/sunspot
https://github.com/rsolr/rsolr
https://github.com/outoftime/sunspot
Elasticsearch
https://github.com/elasticsearch/elasticsearch-rails
https://github.com/elasticsearch/elasticsearch-ruby
Think Sphinx
https://github.com/pat/thinking-sphinx
ほか
https://github.com/activerecord-hackery/ransack
https://github.com/ankane/searchkick
https://github.com/Casecommons/pg_search
https://github.com/dougal/acts_as_indexed
https://github.com/huacnlee/redis-search
ということで、まずは Elasticsearch にトライしてみます。
高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!