19
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Webアプリに全文検索を導入する

Posted at

#はじめに

Rails4.2 + MySQL5.6 ので動くアプリに対し、全文検索(日本語)がしたく、全文検索とは何かわかっていない状態から調べたときのまとめです。
MySQLを使う方法と、別の全文検索サーバーを用いる方法について調べました。

#全文検索とは

複数文書にまたがって、文書に含まれる全文を対象とした検索
https://ja.wikipedia.org/wiki/全文検索

##主なやり方
文書にインデックスをつけて、インデックスを引くことで高速に検索
インデックスの辞書を作るために、文章からインデックス(索引)を抽出する必要がある

###英語の索引文字抽出

  • わかち書き(スペース区切り)であるため、スペースで区切る

###日本語の索引文字抽出

#MySQLを使う
##MySQLに日本語全文検索対応のストレージエンジンを使う

##MySQLの Fulltext indexを使う

#全文検索サーバーを使う

下記のような選択肢がある

  • Elasticsearch
  • Elasticsearchを自分でたてる
  • Elasticsearch service (AWS)
  • Elastic cloud (Elasticsearchを作っている会社のサービス)
  • Amazon Cloudsearch
  • Solr
  • Groonga
  • Sphinx

全文検索エンジンの比較
http://mojavy.com/blog/2014/02/10/search-engine-comparison/

Amazon cloud searchから Elasticsearchに乗り換えた理由
http://blog.otakumode.com/2016/07/15/replace-cloudsearch-to-elasticsearch/

##Elasticsearchの導入

既存のRailsアプリにElasticsearchを導入してみる
http://qiita.com/moriyaman/items/373107a3870c33229bac

Wantedlyの例
http://engineer.wantedly.com/2014/02/25/elasticsearch-at-wantedly-1.html

FRILの例
http://mosowave.hatenablog.com/entry/2015/12/07/000000

##MySQLとElasticserachの同期

#結論

まずはMySQLのFulltext indexで様子をみて、耐えられなければ、またより柔軟な検索を行いたければ別の全文検索サーバーをたてる。全文検索サーバーではElasticsearchがはやりのよう。

19
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?