docker环境下solr6.0配置(中文分词+拼音)
前言:这篇文章是基于之前的“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>
docker环境下solr6.0配置(中文分词+拼音)的更多相关文章
- 转:solr6.0配置中文分词器IK Analyzer
solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持s ...
- 我与solr(六)--solr6.0配置中文分词器IK Analyzer
转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无 ...
- Mac+Docker环境下xdebug的配置
由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...
- Solr6.5配置中文分词器
Solr作为搜索应用服务器,我们在使用过程中,不可避免的要使用中文搜索.以下介绍solr自带的中文分词器和第三方分词器IKAnalyzer. 注:下面操作在Linux下执行,所添加的配置在windo ...
- Solr6.5配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer (二)
之前在 Solr6.5在Centos6上的安装与配置 (一) 一文中介绍了solr6.5的安装.这篇文章主要介绍创建Solr的Core并配置中文IKAnalyzer分词和拼音检索. 一.创建Core: ...
- Solr5.0配置中文分词包
Solr中默认的中文分词是用Lucene的一元分词包. 现在说明在Solr5.0中配置Lucene的SmartCN中文分词包. 1,进入Solr的安装目录,我这里是:/root/nutch/solr- ...
- Solr6.5.0配置中文分词器配置
准备工作: solr6.5.0安装成功 1.去官网https://github.com/wks/ik-analyzer下载IK分词器 2.Solr集成IK a)将ik-analyzer-solr6.x ...
- solr 7.7.0配置中文分词器的数据类型
<dynamicField name="*_is" type="pints" indexed="true" stored=" ...
- solr8.2 环境搭建 配置中文分词器 ik-analyzer-solr8 详细步骤
一.下载安装Apache Solr 8.2.0 下载地址:http://lucene.apache.org/solr/downloads.html 因为是部署部署在windows系统上,所以下载zip ...
随机推荐
- win10系统搜索不到某些老式打印机
问题: win10系统在设置选项里面搜索打印机,却找不到打印机. 百度了一下: 基本说的是驱动问题. 解决方法: 1.下载lansee局域网扫描软件 2.打开嗅探工具点击开始 3.搜索出来之后,会在共 ...
- Problem B: 故障电灯(light)
考虑对电灯进行差分:若第i个电灯和第i + 1个电灯状态不同,则在第i个位置上放一个球 这样我们就放置了不超过2n个球,且必然是偶数个 于是问题转化为:有m个球,每一步可以把一个球平移奇质数个位置,两 ...
- tornado+websocket+mongodb实现在线视屏文字聊天
最近学了tornado和mongo,所以结合websocket 实现一个聊天功能,从而加深一下相关知识点的印象 1.websocket概览 webscoket是一种全双工通信模式的协议,客户端连接服务 ...
- Access Token 与 Refresh Token【转载哒科普啊】
Access Token 与 Refresh Token access token 是客户端访问资源服务器的令牌.拥有这个令牌代表着得到用户的授权.然而,这个授权应该是临时的,有一定有效期.这是因 ...
- myeclipse在过时的环境下部署项目出现的问题
开发环境 操作系统:xp sp3 2002 (ps:客户公司环境只有这个老古董) 开发工具:myeclipse2014 32位 jdk: 1.7_49 32位 DB:DB2 9.1 32位 ...
- 自定义Windows右击菜单调用Winform程序
U9_Git中ignore文件处理 背景 U9代码中有许多自动生成的文件,不需要上传Git必须BE Entity中的.target文件 .bak 文件 Enum.cs结尾的文件,还有许多 extand ...
- SQL server 2008(Linux安装)
今天应公司的要求,需要在阿里云上安装sql server 在本地使用,由于自己原来没有涉及过这样的安装所以走了很多的弯路.现在将我的安装过程与大家分享,希望能够帮到想要学习这个方面的人.以下是我用Ce ...
- 根据URL地址获取对应的HTML,根据对应的URL下载图片
核心代码(获取HTML): #region 根据URL地址获取信息GET public static String GetResult(string url) { return GetResult(u ...
- 【C语言 基础】什么流程控制?
流程控制就是控制程序执行的顺序 流程控制的分类: 1.顺序执行 2.选择执行 定义 某些代码可能执行也可能不执行,有选择的执行某些代码 3.循环执行
- 爬虫之urllib
一.request模块 1.urlopen() --返回值为HTTPResponse对象 urlopen(url, data=None, timeout=socket._GLOBAL_DEFA ...