目录
1.需求阐述
1)数据存储在阿里云内网的Mysql服务器上,需要通过一台服务器SSH隧道穿透取得数据。
2)首先明确,一张设计图需要多种素材来构成。数据量很大,需要操作的有两个表,称为stylepatternshow表,目前数据3w行(此表存着一张图片所需要的所有素材id)和 resource表,目前数据4w行(此表存着各种素材的信息,包括主图案【玫瑰,兰花等】,颜色【红色,黄色等】,技法【水墨画,电脑绘画等】)
3)现在是用户随意挑出想要的设计图的主图案,颜色,技法。 那么需要根据这个需求来推荐出设计图。
首先指出,这个数据库设计是有问题,并没有存储到 素材——>设计图 的信息,只存了设计图——>素材 的信息(设计图包含有需要素材的id)。就这个情况,正常编程思路是:根据需求,在resource表中分别找出对应主图案,颜色,技法的有哪些material列表,再去stylepatternshow表去找同时包含这三个material的设计图,达到目的,亲测需要30s。因此有必要建立搜索引擎,实现快速查找,结果平均1s,给力!
2.环境搭建
首先列出我的环境
- ubuntu 16.04LTS
- JAVA环境:
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)
- elasticsearch-6.3.1
- python2/3都行
首先我们需要借助elasticsearch来建立搜索引擎(owe to 它的倒排索引),下面来搭建环境:(确保你有Java环境)
2.1安装Elasticsearch
-
检测是否安装了Elasticsearch
ps aux|grep elasticsearch
- 下载Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz
- 或者从官网中下载相应的压缩包,使用ftp上传至服务器进行压缩安装:
下载