Laravel Scoultは、Laravelにフルテキスト検索機能を追加するパッケージ。
Laravel Scout – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.4/scout
その検索エンジンにはデフォルトでAlgoliaが選ばれている。
Algolia | The Most Reliable Platform for Building Search
https://www.algolia.com/
AlgoliaはサーチAPIを提供する商用サービス。無償プランもあるけど、レコード上限は1万件、オペレーション上限は月間10万件に制限されている。自分が今やっている実験ではレコード件数がすでに6万件を超えているので無償プランは使えない。かといって、自腹で有償プランを契約できる予算は無い。
Laravel Scoutはドライバを書くことで異なる検索エンジンを接続できるようになっている。オープンソースのフルテキスト検索エンジンと言えばElasticSearch。調べてみると、Laravel ScoultのElastric Searchドライバがすでに存在した。
Laravel Scout Elasticsearch Driver
https://github.com/ErickTamayo/laravel-scout-elastic
セットアップ手順を説明している記事も見つかった。
Basic Search Functionality with ElasticSearch & Laravel Scout
https://medium.com/@samogorm/basic-search-functionality-with-elasticsearch-laravel-scout-6ac182c99cbf
この記事をなぞって、自分のLaravelプロジェクトにElasticSearch+Laravel Scoutによる全文検索機能を追加してみたい。いきなり本番サーバーに適用するのは怖いので、ローカルのHomestead(Ubuntu)で試してみる。
まずは以下の下準備を行う。
Prerequisites
- Basic Knowledge of Laravel
- You have Laravel 5.3 installed
- The latest Java version is installed to your machine
- You have installed ElasticSearch to your machine
- You have ElasticSearch running a http://localhost:9200
Javaのインストール
Linuxmania:apt-getでJavaをインストールしよう (Ubuntu)
https://www.linuxmania.jp/apt-install-java.html
1 2 3 4 5 6 |
$ sudo apt-get update $ sudo apt-get install default-jre $ java -version openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11) OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode) |
ElasticSearchのインストール
Installing Elasticsearch | Elasticsearch Reference [5.5] | Elastic
https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
1 2 3 4 5 |
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - $ sudo apt-get install apt-transport-https $ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list $ sudo apt-get update $ sudo apt-get install elasticsearch |
1 2 |
$ sudo /etc/init.d/elasticsearch start [ ok ] Starting elasticsearch (via systemctl): elasticsearch.service. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ curl http://localhost:9200 { "name" : "zbu9NHN", "cluster_name" : "elasticsearch", "cluster_uuid" : "VVI6hazgQB2dssfD3kQQeQ", "version" : { "number" : "5.5.0", "build_hash" : "260387d", "build_date" : "2017-06-30T23:16:05.735Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" } |
ElasticSearchが動いたので、Laravel Scoutの組み込みに続く。