准备
因为没有积分下载资料,于是上网查阅资料并结合了视频,自己研究了一下如何在docker下安装solar,并且配置中文分词器。为了更加契合视频,我这里选择配置solar5.5.5,而且比较简单
参考文章 1、docker 安装solr8.6.2 配置中文分词器 2、阳光沙滩博客系统-文章搜索模块
用到的资源 jar包及中文断词资料包用到的资源(比视频更加全) 提取码:9nzq
开展前请先观看视频的101、102、103集这样配置起来更加轻松
开始配置
1. 先在ubntu下的docker目录下创建solr文件夹,并且创建ikanalyzer-solr5文件夹
sudo mkdir solr
cd solr
sudo mkdir ikanalyzer-solr
然后将用到的资源复制到solr/ikanalyzer-solr目录下(复制的方法可以用共享文件夹或者用vmware的方式,具体可以自己百度)
2. 在solr目录下创建docker-compose.yml
docker-compose.yml
version: '3.1'
services:
solr:
build: ikanalyzer-solr5
restart: always
container_name: sob_blog_solr
ports:
- 8983:8983
注意这里的build:ikanalyzer-solr5一定要与第一步创建的文件夹名字相同,以为我们是使用docker-compose的方式来创建容器的,会自动搜索同一目录下的ikanalyzer-solr5,若是不同会启动失败。
3. 配置Dockerfile
这里我们的资源包是有Dockerfile的,用的是引用文章2的Dockerfiler的配置 但是我们有所改动
删除了下面两行
# 增加分词配置
COPY managed-schema /opt/solr/server/solr/sob_blog_core/conf
这一步的目的是因为我准备的资料包是没有managed-schema的因为不同版本的solr的managed-schma是不同的,如引用文章1中使用的solr8.6.2的managed-schema与我们这里使用managed-schema是不同,其实差别不大,例如8.6.2的int和long都是pint和plong,而5.5.5的是int无需要加p,这些差别都可以在managed-schema的fieldType找到,所以我就没有准备managed-schema,下面会有managed-schema配置教导
4. 执行docker-compose.yml
sudo docker-compose up -d
这里可能会出现一个问题 Version in "./docker-compose.yml" is unsupported.
如果你是跟着视频走的话可能会出现这个问题,原因是docker版本太低了,可以更新docker版本,或者降低docker-compose.yml用到的版本 我这里的解决方法就是第二种,将version: '3.1' 改成 version: '2'
5. 修改managed-schema
我们先获取到镜像中的managed-schema
sudo docker cp sob_blog_solr:/opt/solr/server/solr/sob_blog_core/conf/managed-schema .
sob_blog_solr为创建容器的名称(若是创建的名称不同,用自己的) 这里是将managed-schema的内容复制到所在的路径下(建议先将文件复制打共享文件路径下,然后在windows中修改,修改后在复制回去),然后修改managed-schema
修改的部分 在managed-shema最下面插入下面这些内容(都是照着视频改的)
<!--chineseAnalyzed-->
<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>
<!--自定义字段-->
<field name="blog_view_count" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="blog_title" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="blog_content" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="blog_create_timme" type="date" indexed="true" stored="true" required="true" multiValued="false" />
<field name="blog_labels" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="blog_url" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="blog_category_id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!--搜索item-->
<field name="search_item" type="text_cn" indexed="true" stored="true" required="true" multiValued="true" />
<copyField source="blog_title" dest="search_item" />
<copyField source="blog_content" dest="search_item" />
<copyField source="blog_labels" dest="search_item" />
修改完成后再将managed-schema复制到容器的managed-schema路径下,覆盖原来的managed-schema
sudo docker cp managed-schema sob_blog_solr:/opt/solr/server/solr/sob_blog_core/conf/
注意一个问题:我这里用的solr5.5.5,不同版本的solr的conf文件是不同的,所以这里获取到的managed-schema是针对solr5.5.5的
6. 重启solr
sudo docker restart blog-solr
测试
登录solr
这里表示solr核心创建成功
测试分词