Rails / Elasticsearch / Vue.js でオライリー書籍名と目次の全文検索を試す
業務でElasticsearchを触ったので忘れないうちに実装時のメモがてら適当な全文検索webアプリをつくってみました。
Githubのリポジトリは下記です。production用途ではないためローカル開発環境で実行する準備しかしていません。
概要
念の為記載しますが、オライリーの書籍情報はあくまで個人の学習目的でスクレイピングしています。
本記事のコードを利用してスクレイピングを実行する際はオライリーのサイトに負荷をかけるようなスクレイピングはしないようご注意ください。
全文検索を試す
READMEのUsageのままですが、ざっくりと解説します。上記リポジトリのclone後の作業です。
buildしてコンテナを起動します。up -d
でもOKですが初回起動時は-d
なしで起動経過を確認してください。
docker-compose build docker-compose up
起動したらappコンテナ内にログインして初期処理を手動で実行します。これはENRTYPOINT
に設定してコンテナ起動時に自動実行したかったんですが手動にしてしまいました。
docker-compose exec app bash # コンテナ内で init.sh
コンテナにログインしたらスクレイピングのrakeタスクを実行します。
# コンテナ内 bundle exec rake scraping:oreilly
スクレイピングが完了したら、コンテナからログアウトします。その後、ローカルでフロントエンドアプリを起動します。
cd frontend yarn install yarn dev
技術的な話
バックエンドはdockerでRails、フロントエンドはローカルでVue.jsという少し中途半端?な構成です。
フロントエンドはVue RouterとVuexの勉強も兼ねていたのでNuxt.jsは使用しませんでした。
所感
- 当然ですがElasticsearchの知識がないと何をどうして良いかわからず苦労するので書籍1冊読んでざっくりと全体像を把握しておくと良いです。
- 全文検索は難しそうに見えますが実装自体はElasticsearchのgemがよろしくやってくれるので、gemのREADMEみながら作ればなんとかなりました。
- Vue.jsのVue RouterがURL直接アクセスだと正しくページが表示されません。今だに対応できていません。
高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)
- 作者:Rafal Kuc (lにストローク符号、cにアクサン・テギュ付く),Marek Rogozinski (nにアクサン・テギュ付く)
- 出版社/メーカー: 角川アスキー総合研究所
- 発売日: 2014/03/25
- メディア: Kindle版