正在写一个博客系统,需要使用到关键词搜索,准备使用开源的solr
1、拉取docker镜像因为是使用vps搭建的环境,直接在vps上拉取一个最新的solr的docker镜像
2、配置docker-compose.yml直接配置,配置文件如下
version: '2.1'
services:
solr:
image: solr
restart: always
container_name: blog_system_solr
ports:
- 8983:8983
使用命令
sudo docker-compose up -d
成功挂起
3、创建solr核心使用docker的exec命令创建solr核心
sudo docker exec -it blog_system_solr bin/solr create_core -c Ik_core
成功如下:
4、使用浏览器进行访问docker中映射的solr端口号为8983,我们使用浏览器直接访问
需要注意,我这里使用的是tx的vps,需要开启防火墙
带上端口号进行访问
选择刚刚创建的核心lk_core
5、上传jar包进行配置将所需的jar包上传到vps上
上传成功
将jar包复制到docker容器内
sudo docker cp ik-analyzer-8.3.0.jar blog_system_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/ sudo docker cp ik-analyzer-solr7-7.x.jar blog_system_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/ sudo docker cp solr-dataimporthandler-8.4.0.jar blog_system_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/ sudo docker cp solr-dataimporthandler-extras-8.4.0.jar blog_system_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/
复制成功:
至于具体的solr什么版本,可以使用如下命令进入solr容器中查看
sudo docker exec -it blog_system_solr /bin/bash
我这里使用的是目前最新版本8.11.1,修复了log4j的洞
6、修改xml配置文件进入solr容器进行文件夹的创建
sudo docker exec -it --user=root blog_system_solr /bin/bash cd /opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF mkdir classes exit
在vps中创建xml文件IKAnalyzer.cfg.xml
IK Analyzer 扩展配置 ext.dic; stopword.dic;
进入容器
sudo docker exec -it --user=root blog_system_solr /bin/bash
修改配置
cp /opt/solr-8.11.1/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-8.11.1.jar /opt/solr-8.11.1/se rver/solr-webapp/webapp/WEB-INF/lib/ cd /var/solr/data/Ik_core/conf/ vim managed-schema
需要注意,solr容器没有自带vim,需要使用apt下载
sudo apt update sudo apt install vim
修改managed-schema文件,在最后面加入如下
修改solrconfig.xml文件
在最后面添加如下:
db-data-config.xml
最后,退出容器,在vps中进行重启
sudo docker restart blog-solr7、进入后台查看是否成功
进入solr后台,如果出现text_cn说明中文分词器配置成功
进行一下中文分词器测试
8、在Springboot项目中集成solr配置pom.xml文件,添加solr依赖,这里使用目前最新的2.4.13版本
org.springframework.boot spring-boot-starter-data-solr 2.4.13
在application.yml中配置solr地址
spring:
data:
solr:
host: http://solr运行的ip地址:8983/solr/Ik_core
创建一个solr测试服务层
@Service
public class SolrTestService {
@Autowired
private SolrClient solrClient;
public void add() {
SolrInputdocument doc = new SolrInputdocument();
doc.addField("id","954823261479239680");
doc.addField("blog_title","Java入门基础");
doc.addField("blog_view_count",10);
doc.addField("blog_content", "Java入门基础");
doc.addField("blog_create_time", new Date());
doc.addField("blog_create_timme", new Date());
doc.addField("blog_labels", "JavaEE,jvm,后端,Java开发");
doc.addField("blog_url", "https://www.woodwhale.top");
doc.addField("blog_category_id","952606168922980352");
try {
solrClient.add(doc);
solrClient.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
测试接口调用
@PostMapping("/solr")
public ResponseResult solrAddTest() {
solrTestService.add();
return ResponseResult.SUCCESS("添加成功");
}
spring后台没保存,查看solr后台,进行查询,发现添加成功
同理,更新只要ID一样,就可以进行内容更新,删除只要ID一样,就会删除该数据



