Docker +Solr****搜索引擎
Docker search solr
Docker pull solr
Docker run –name solr_test –d –p 8983:8983 –t solr
Docker exec –it solr_test /bin/bash
Docker exec –it –user=solr solr_test bin/solr create_core –c gettingstarted
Docker exec –it
–user=solr_test bin/post –c gettingstarted example/exampledocs/manufacturers.xml
Docker exec –it solr_test /bin/bash
Solr的目录: /opt/solr/server/solr/project-dir
Docker run –name solr_user
-v /data/solr_user:/opt/solr/server/solr/solr_user
–d –p 8983:8983 –t solr
修改solr_user/core.properties
name=solr_user
config=/opt/solr/server/solr/solr_user/conf/solrconfig.xml
schema=/opt/solr/server/solr/solr_user/conf/schema.xml
dataDir=/opt/solr/server/solr/solr_user/data/
三个路径与solr容器中的路径一致。
分词器设置不对:
/opt/solr/server/lib/
https://github.com/chenlb/mmseg4j-solr
http://www.cnblogs.com/ac1985482/p/4110764.html
Docker run –name solr_user
-v /data/solr_user:/opt/solr/server/solr/solr_user
-v /data/solr/mmseg4j-solr-2.3.0.jar:/opt/solr/server/lib/mmseg4j-solr-2.3.0.jar
-v /data/solr/mmseg4j-core-1.10.0.jar:/opt/solr/server/lib/mmseg4j-core-1.10.0.jar
–d –p 8983:8983 –t solr
Jar包挂载目录:
/opt/solr/dist/
Docker run –name solr_user
-v /data/solr_user:/opt/solr/server/solr/solr_user
-v /data/solr/mmseg4j-solr-2.3.0.jar: /opt/solr/dist/mmseg4j-solr-2.3.0.jar
-v /data/solr/mmseg4j-core-1.10.0.jar: /opt/solr/dist/mmseg4j-core-1.10.0.jar
–d –p 8983:8983 –t solr
版本问题:
Docker solr版本和mmseg4j分词器的版本问题:
可能是jar包位置不对
/opt/server/lib
Jar包之间的相互依赖关系;
制作一个solr镜像
Docker commit debain mydebain
Docker save mydebian > mydebian.tar
Docker import mydebain.tar testdebain
删除所有未运行 Docker 容器
docker rm $(docker ps -a -q)
删除所有未打 tag 的镜像
docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')
删除所有镜像
docker rmi $(docker images -q)
根据格式删除所有镜像
docker rm $(docker ps -qf status=exited)
修改solr/WEB_INF/web.xml文件:
- 下载docker tomcat8容器和solr-5.4.0.tgz版本,为了便于支持分词功能(版本过高,则mmseg分词器不支持)
Docker search tomcat
Docker pull tomcat
下载solr-5.4.0.tgz版本:
准备mysql,mmseg jar包。
- 启动容器,进入容器内。
Docker run –name tomcat-solr –p 8080:8080 –d –v /data/solr/:/data/solr tomcat
Docker exec –it tomcat-solr /bin/bash
Tar xvfz solr-5.4.0.tgz
复制webapp目录:
Cp –r /data/solr/solr-5.4.0/server/solr-webapp/webapp /usr/local/tomcat/webapps/
Mv webapp solr
复制lib/ext/* jar包
Cp –r /data/solr/solr-5.4.0/server/lib/ext/* /usr/local/tomcat/webapps/solr/WEB-INF/lib/
复制server/solr目录
Cp –r /data/solr/solr-5.4.0/server/solr/ /usr/lcoal/tomcat/
Mv solr solrhome
复制log4j
Cp
/data/solr/solr-5.4.0/server/resources/log4j.properties /usr/local/tomcat/webapps/solr/WEB-INF/classes/
将solr-5.4.0/dist目录下的
solr-dataimporthandler-5.4.0.jar solr-dataimporthandler-extras-5.4.0.jar
复制到tomcat/webapps/solr/WEB-INF/lib/下,这个是为了以后导入数据库表数据
cp
/data/solr/solr-5.4.0/dist/solr-dataimporthandler-5.4.0.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib/
cp
/data.solr/solr-5.4.0/dist/solr-dataimporthandler-extras-5.4.0.jar /usr/lcoal/tomcat/webapps/solr/WEB-INF/lib/
把mysql-connector-Java-5.1.21.jar
放到/home/developer/tomcat7/lib/下
mmseg4j-core-1.10.1-SNAPSHOT.jar
mmseg4j-solr-2.3.1-SNAPSHOT.jar
tomcat/webapps/solr/WEB-INF/lib/
此时solrhome为新建核的保存路径
修改/usr/local/tomcat/webapps/solr/WEB-INF/web.xml文件:将Tomcat中的solr关联上之前创建的solr工程
配置solr core的存放路径
- 修改配置文件,新建core
新建一个核/solrhome/solr_user data conf core.properties
Core.prpperties配置路径:
在…/solrhome/solr_user/conf/solrconfig.xml中配置:
为了数据库的导入功能。
/solrhome/solr_user/conf新建data-config.xml配置文件:
主要用于连接数据库
/solrhome/solr_user/schema.xml中配置上述查询字段的索引:
Docker restart tomcat-solr
Docker logs tomcat-solr
访问:
http://192.168.238.131:8080/solr/index.html
现在配置mmseg分词器:
在schema.xml中配置如下:
Mmseg分词器的jar包位置不对:
应该放/usr/lcoal/tomcat/webapps/solr/WEB-INF/lib目录下
将此容器保存为新镜像:
Docker commit tomcat-solr tomcat-solr
启动容器,把新建core的目录挂在到tomcat容器中的solrhome路径下:
Docker run –name new-solr –p 8080:8080
–v /data/new-core:/usr/local/tomcat/solrhome/ -d tomcat-solr
Docker restart solr-test
至此tomcat-solr制作完成。
Solr具体搜索语法应用
上传docke容器到仓库:docker hub
登录到docker hub
Docher push本地镜像到仓库
Docker push chenwenkai123456/solr-tomcat-mmseg
检测仓库的变化:
Docker inspect chenwenkai123456/solr-tomcat-mmseg
Docker search solr-tomcat-mmseg
Docker pull chenwenkai123456/solr-tomcat-mmseg
最初使用了tomcat作为solr容器来使用,其实solr本身就可以作为服务来使用,以后再交流心得。