我们要做的东西比较简单,就是把一个公众账号的文章拉下来,然后实现所有文章的“标题”和“内容”的搜索,在项目中我选择了李笑来老师的”学习学习再学习“中的50篇文章。
这个 Demo 是“笑来搜”的一个原型。
你可以直接看一下最终的效果,请查看 http://scout.lijinma.com/search 。
如果想看看代码原理,请请查看三篇文章:
一:写一个搜索:使用 Laravel Scout,Elasticsearch,ik 分词
二:写一个搜索:解决搜索结果高亮问题,使用 Laravel Scout,Elasticsearch,ik 分词
三:写一个搜索:自定义词库;使用 Laravel Scout,Elasticsearch,ik 分词
Laravel 5.4
ElasticSearch 5.1.1
因为使用 Laravel 5.4
版本,所以需要一些基本的安装需求:
- PHP >= 5.6.4
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
你可以使用 homestead 或者 valet 来跑这个项目,但是为了你更快就玩起来,我建议你这么做:
如果是你 Mac 平台:
# 安装最新的 php 7.1 版本
$ brew install php71
# 安装 mysql 5.7
$ brew install mysql
如果 brew 下载太慢了,推荐一个我使用的镜像,执行命令:
$ export HOMEBREW_BOTTLE_DOMAIN="http://homebrew-mirror-china.tycdn.net"
好了,以上依赖按照完成之后,就可以安装项目了。
$ git clone https://github.com/lijinma/laravel-scout-elastic-demo.git
$ composer install
如果没有 composer
,请下载 composer
,参考
$ mysql -uroot
> create database laravel_scout_elastic_demo;
$ cp .env.example .env
确认里面的数据库配置正确:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_scout_elastic_demo
DB_USERNAME=root
DB_PASSWORD=
因为我们要使用 ik 插件,在安装这个插件的时候,如果自己想办法安装这个插件会浪费你很多精力。
所以我们直接使用项目: https://github.com/medcl/elasticsearch-rtf
当前的版本是 Elasticsearch 5.1.1
,ik 插件也是直接自带了。
安装好 ElasticSearch,跑起来服务,测试服务安装是否正确:
$ curl http://localhost:9200
{
"name" : "Rkx3vzo",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Ww9KIfqSRA-9qnmj1TcnHQ",
"version" : {
"number" : "5.1.1",
"build_hash" : "5395e21",
"build_date" : "2016-12-06T12:36:15.409Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}
如果正确的打印以上信息,证明 ElasticSearch 已经安装好了。
接着你需要查看一下 ik 插件是否安装(请在你的 ElasticSearch 文件夹中执行):
$ ./bin/elasticsearch-plugin list
analysis-ik
如果出现 analysis-ik
,证明 ik 已经安装。
请确保你的 8000 端口没有被占用。
$ php artisan serve
从浏览器打开 http://localhost:8000 ,确认是否正常显示:
$ php artisan es:init
$ php artisan migrate
$ php artisan post:import
出现以下内容,说明正确导入了:
...
create one post!
create one post!
create one post!
create one post!
...
从浏览器打开 http://localhost:8000,搜索一个数据,比如成长
我是金马,一个想搞点事情的程序员。如果这个项目对你有帮助,你可以请我喝杯咖啡,谢谢 :)
The MIT License (MIT).