1.solr服务的独立安装部署
- 对于高版本的solr来说,完全可以不依靠tomcat等web容器来进行部署,能够独立部署运行。
- window环境下solr服务的部署安装以及linux环境下solr服务的安装以及独立运行
2.solr在windows和linux下的安装部署
-
下载jdk和solrserver
jdk的下载地址jdk下载
solr server的下载地址Solr 7.7.1下载
Linux下载solr-7.7.1.tgz,Windows下载solr-7.7.1.zip -
windows环境下解压solr-7.7.1.zip,目标位置自己定(不要放在有中文的目录下),我的目录为:E:\solr
linux环境下需要解压solr-7.7.1.tgz,目标位置自定定,比如我本地的目录为:/opt/solr
命令为:tar -zxvf solr-7.7.1.tgz -C /opt/solr -
进入bin目录下,启动solr服务。
windows下为直接在E:\solr\solr-7.7.1\bin目录下执行cmd,即可在该目录下打开cmd命令行,执行命令:solr.cmd start 即可启动solr服务
linux使用cd命令切换到bin目录下,执行命令:./solr start -
创建索引库(core)
建议使用命令行的方式创建,不建议在web页面中创建,命令行创建的方式在windows下的命令为:solr create -c searchServer -d _default。在linux下的命令为:./solr create -c searchServer -d _default
3.添加ik中文分词器
1.此处需要下载ik分词器的jar和源码
jar包的下载地址:ik分词器jar包下载
源码下载地址:ik分词器源码下载
2.将下载好的ik-analyzer-7.7.1.jar包放入Solr服务的 webapp\WEB-INF\lib目录下,我的目录全路径是:E:\solr\solr-7.7.1\server\solr-webapp\webapp\WEB-INF\lib。
将下载好的ik-analyzer-solr7-master源码下的src\main\resources目录中的文件(如下),放入到webapp\WEB-INF\classes目录下(classes目录需要新建):主要包括以下几个文件
① IKAnalyzer.cfg.xml 扩展配置文件
② ext.dic 扩展词库
③ stopword.dic 停止词库
④ ik.conf 动态词库配置文件
⑤ dynamicdic.txt 动态词库
我本地的文正路径为:E:\solr\solr-7.7.1\server\solr-webapp\webapp\WEB-INF\classes。
3.配置TestCore的server\solr\searchServer\conf\managed-schema,添加IK分词器,示例如下:
<!-- ik分词器 --> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
上面配置的放置位置:放在<schema name="default-config" version="1.6">标签下。
`
4.配置索引字段(field)
Solr filed域的配置极为重要,filed的配置会影响到索引的创建和查询出的结果展示。
<!-- Solr Test search -->
<field name="title" type="text_ik" indexed="true" stored="true" required="true" multiValued="true" />
<field name="content" type="text_ik" indexed="true" stored="true" required="true" multiValued="true" />
<field name="filetype" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="uploadtime" type="string" indexed="false" stored="true" required="true" multiValued="false" />
<!-- 复制域,可以将多个Field复制到一个Field中,以便进行统一的检索,multiValued属性需要设置成true -->
<copyField source="content" dest="title" />
type:这个是之前定义的FieldType的名称,在这使用的ik分词
indexed:是否索引(true/false)
stored:是否存储(是否将索引结果存储到索引库)
multivalued:是否多值(一般配合copyField使用)
动态filed
在定义filed时,可能会随着业务主线作出变更,那么每次在managed-schema更改filed后,还需重启Solr
也是个麻烦事儿。那么在生产环境如此操作可能显得不是那么理想了。那么可以在变更时使用类似通配
符的方式建立动态filed,比如name="title"可以写成name="fl_*",这样只要以fl_开头的索引都可以被建
立。
因为solr服务的端口比较多,使用重启命令时会提示指定端口,因此,此处不使用solr的重启命令,而是采用先关闭solr服务,再启动solr服务的方式进行
停止solr服务的命令:
windows下:solr.cmd stop -all
linux下:./solr stop -all
启动solr服务的命令;
windows下:solr.cmd start
linux下:./solr start (root用户是加上参数 -force)
至此独立部署solr服务的方式就完成了。
此种方式部署的服务产生的索引文件的位置:
E:\solr\solr-7.7.1\server\solr\searchServer\data\index