前言:这篇文章是基于之前的“linux环境下配置solr5.3详细步骤”(http://www.cnblogs.com/zhangyuan0532/p/4826740.html)进行扩展的。本篇的步骤是后来记录的,所以没有细节的命令代码,也没有截图,谅解。

原先是solr5.3部署在linux环境下,本篇是solr6.0部署在docker环境下。大概是半年前2016年8月进行配置的,solr现在有小版本变化。

一、docker创建镜像和容器

由于dockerfile里默认用户为“solr",从宿主机拷入到容器内的文件无法设置读写编辑权限。因此我把dockerfile修改去除了“ENV  SOLR_USER solr”等用户相关配置,默认使用root用户。

1、下载solr6.0.1版的Dockerfile文件(共三个文件:Dockerfile、scripts/docker-entrypoint.sh、scripts/wait-for-solr.sh)
2、修改Dockerfile,去除solruser的信息
3、cd到Dockerfile所在目录(/home/zhangyuan/docker-solr/6.0),执行build命令,生成镜像(会等待很久
$ docker build -t solr .(注意owner和权限)
4、执行run命令,启动容器
mkdir -p /home/docker/solr/qdfs
$ docker run --name qdsolr -d -p 8983:8983 -v /home/docker/solr/qdfs:/home/docker/solr/qdfs solr:latest
5)进入容器内修改/opt/solr/bin/solr.in.sh文件,SOLR_HEAP="4096m"

二、ik分词器配置

1、ik分词器的jar包(此jar包为配置solr5.3时使用的那一套)存放在solr_analyzer目录下,jar包列表如下:
IKAnalyzer-5.0.jar
solr-analyzer-ik-5.1.0.jar
pinyin4j-2.5.0.jar
analyzer-pinyin-lucene-5.1.0.jar
analyzer-pinyin-solr-5.1.0.jar

2、从宿主机向docker容器内拷贝文件(solr_analyzer下所有文件拷入容器内/opt/solr/server/solr-webapp/webapp/WEB-INF/lib目录下)
$ docker cp /home/docker/solr/solr_analyzer/. qdsolr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib

3、ik分词器需要ext.dic(字典) stopword.dic(排除词) IKAnalyzer.cfg.xml(配置)的几个文件连同文件夹拷入WEB-INF下(编辑IKAnalyzer.cfg.xml中ext.dic的注释放开)
$ docker cp /home/docker/solr/classes qdsolr:/opt/solr/server/solr-webapp/webapp/WEB-INF

4、提交容器的修改到镜像,并命名镜像为solr:chinese

三、配置solr实例

1、将实例的core拷一个到solrhome,并命名为自己的名字(我的叫qdfs)
$ cp -r /opt/solr/example/example-DIH/solr/solr /opt/solr/server/solr/qdfs
2、修改solrconfig.xml文件,配置实例需要的jar包
大概在86行,添加分词需要的jar
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-analysis-extras-\d.*\.jar" />
3、修改managed-schema文件(6.0之前版本为schema.xml文件)
修改field信息为与自己的实体类相同的样子(添加field、添加copyField)
添加IK分词器配置,在文档最后面添加如下(意思为text_ik类型字段进行索引时使用ik分词器,并且进行拼音分词,进行查询时只使用ik进行中文分词)
<!--IK-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
<filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinTokenFilterFactory" firstChar="false" minTermLength="2" />
<filter class="org.apache.lucene.analysis.pinyin.solr5.PinyinNGramTokenFilterFactory" nGramChinese="false" nGramNumber="false" />

</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
</analyzer>
</fieldType>

4、將实例文件夹(qdfs)拷贝到qdsolr容器附加卷目录(/home/docker/solr/qdfs)下

四、启动容器

1、启动solr:chinese,同时设置端口、运行内存、附加文件夹
$ docker run --name qd-solr --restart=always -d -p 8983:8983 -m 4096m -v /home/docker/solr/qdfs:/opt/solr/server/solr/qdfs solr:chinese

2、访问localhost:8983/solr进行查看测试

五、其他配置(可选)

solrConfig.xml文件中可进行下述修改

1、修改自动提交
(solr中数据索引后需要commit才能真正持久保存,我最早使用代码进行主动commit,后来发现太慢,改为使用autoCommit)
autoCommit分两类,一个是真正commit索引数据存入文件,慢但是安全,一个是软commit索引数据存入内存或临时文件,快但是不安全。调整配置的数据取到一个平衡点可以有效提高效率。

#1万条或者5分钟提交一次,关闭重新打开searcher(提高commit速度),1分钟软提交一次

<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>300000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>

<autoSoftCommit>
<maxTime>60000</maxTime>
</autoSoftCommit>

2、修改提交限制

和autoCommit配合使用,防止大量数据批量导入时内存溢出或者操作超时。
#50M数据或者1000个最大缓存个数
<ramBufferSizeMB>50</ramBufferSizeMB>
<maxBufferedDocs>1000</maxBufferedDocs>

3、最大可启动searcher

solr每次提交时,都会新打开一个searcher,打开searcher需要花费一定时间,在这个过程中,如果又有新的commit提交,又会打开新的searcher。当数量超过SolrConfig.xml中配置的maxWarmingSearchers时,会报错。
maxWarmingSearchers配置的是同时可以存在的searcher个数。

#由2改为4
<maxWarmingSearchers>4</maxWarmingSearchers>

转载于:https://www.cnblogs.com/zhangyuan0532/p/6306936.html

docker环境下solr6.0配置(中文分词+拼音)相关推荐

  1. Linux环境下使用NLPIR(ICTCLAS)中文分词详解

    本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 欢迎交流,禁止将本人博客直接复制下来,上传到百度文库等平台. NLPIR介绍 NLPIR是中科院出的一款汉语分词 ...

  2. standfordcorenlp在python环境下的使用(中文分词、词性标注、命名实体分析、解析语法、解析语法关系)

    操作环境:windows 需求:安装PyCharm.JDK1.8 第一步: 首先从stanford NLP网页下载两个包,分别是stanford-corenlp-full-2018-10-05.zip ...

  3. docker环境下安装nginx、挂载文件、docker容器中文乱码

    docker环境下安装nginx.挂载文件.docker容器中文乱码 文章目录 docker环境下安装nginx.挂载文件.docker容器中文乱码 1.首先下载docker的nginx镜像 2.查看 ...

  4. Solr之——配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/70200378 在上一篇博文<CentOS安装与配置Solr6.5>中, ...

  5. 1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入

    一.下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3 二.如果想下载Luc ...

  6. MySQL在Docker环境下运行基础

    墨墨导读:MySQL在Docker环境下运行的基础操作,本文从Docker介绍.安装Docker.MySQL安装部署几个方面展开介绍. 另:墨天轮邀请到原厂专家直播解析MySQL的性能管理,欢迎大家报 ...

  7. Docker环境下的前后端分离部署与运维 脚本

    <Docker环境下的前后端分离部署与运维>脚本 文章目录 <Docker环境下的前后端分离部署与运维>脚本 一.Docker虚拟机常用命令 二.安装PXC集群,负载均衡,双机 ...

  8. Linux服务器docker环境下Jasper Report报错

    Linux服务器docker环境下Jasper Report报错 Jasperreports模板制作方法在网上都有很多教程,可以自行探索一下 我用的模板参考:https://blog.csdn.net ...

  9. docker环境下安装rockermq以及rockermq-console

    docker环境下安装rockermq以及rockermq-console 文章目录 docker环境下安装rockermq以及rockermq-console 1.下载rocketmq的镜像 2.启 ...

最新文章

  1. ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景
  2. 练笔--字符串,向量和数组2
  3. 网站关键词优化从这几方面下手效果会更好!
  4. vuex状态管理简单入门
  5. [10] AOP的注解配置
  6. 个人作业五:四则运算二
  7. 未来我们需要一辆什么样的智能汽车?
  8. 使用跟踪和调试进行条件编译
  9. httpclient依赖_.NetCore 3.1高性能微服务架构:封装调用外部服务的接口方法HttpClient客户端思路分析...
  10. TS助手 v3.52 视频网站下载工具,网页视频下载神器
  11. QGIS安装以及使用教程
  12. php验证码刷新_php实现点击可刷新验证码
  13. 视频解析接口公众号对接教程
  14. Windows SDK SignTool.exe 微软文件签名工具的使用
  15. 公钥加密数字签名证书的原理总结
  16. U-Mail反垃圾邮件网关-垃圾邮件的“克星”
  17. 中台战略:企业数字化转型利器
  18. python渲染光线_在python中为图像添加光照效果
  19. 上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧
  20. salt-stack部署

热门文章

  1. 一个完整的python项目源码-一个Python开源项目-腾讯哈勃沙箱源码剖析(上)
  2. python入门编程软件免费-Python 3.7.0编程软件免费下载
  3. python视频课程推荐-听说程序员都在用,5款Python开发工具推荐
  4. python中文意思k-Python中_,__,__xx__的区别
  5. 简单python画圣诞树图片-python圣诞树编写实例详解
  6. python打不开怎么办-python为什么打不开
  7. 关于python的一些好的书籍推荐-荐书||关于Python的一些书籍推荐
  8. python有道翻译-Python版有道翻译
  9. 自学python 知乎-马哥教育官网-专业Linux培训班,Python培训机构
  10. python强大体现在哪些方面-大公司里哪些方面运用了python?