springboot如何整合solr
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章为大家展示了springboot如何整合solr,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、下载 solr下载地址 ,选择你想要下载的版本htt
千家信息网最后更新 2026年10月31日springboot如何整合solr
本篇文章为大家展示了springboot如何整合solr,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、下载 solr
下载地址 ,选择你想要下载的版本
http://archive.apache.org/dist/lucene/solr/7.5.0/
下载解压
二、启动 solr
solr 的启动方式有多种,可以结合 tomcat,新版本的 solr 可以直接启动。这里通过命令行启动。
打开 cmd,启动项目

这里记下两个常用命令
启动 bin\solr.cmd start停止 bin\solr.cmd stop -all
注意:如果启动失败 提示 缺少 managed-schema 的话,解决办法如下
把 \server\resources 下的 conf 文件夹 复制到新建的 core 中 \server\solr\new_core
启动成功后,打开浏览器进入 solr 控制台 http://localhost:8983/solr/#/
三 、添加 core 和 字段
core相当于数据表,我们可以对 core 进行管理

选中 core ,创建字段,输入字段名和所对应的分词器
四、数据操作演示
/update : 添加或更新数据
JSON : 以 json 格式添加数据
添加成功后,我们查询一下
q :查询关键字 ,可以通过 字段名=key 指定查询字段名sort : 排序start rows : 分页查询fl:指定返回结果需要显示的字段df:默认域 指定需要查询的字段
五、中文分词器
链接:https://pan.baidu.com/s/1i5DJbj0lBeaJpgd1BInMxg 提取码:prfe
下载后,放到 \server\solr-webapp\webapp\WEB-INF\lib 目录下
然后编辑 managed-schema.xml。增加以下内容 ,最后重启 solr
现在来测试一下未使用中文分词器之前和之后的区别
可以看到 text_ik 分词器更加符合汉字的分词习惯
六、springboot 整合 solr
jar包依赖
org.springframework.boot spring-boot-starter-data-solr
application.properties配置,这是指定了 core 的情况,也可以不指定,在操作的时候再指定
spring.data.solr.host=http://localhost:8983/solr/new_core
测试用例
package org.elvin.mysolr.controller;import org.apache.solr.client.solrj.SolrClient;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.response.QueryResponse;import org.apache.solr.common.SolrDocument;import org.apache.solr.common.SolrDocumentList;import org.apache.solr.common.SolrInputDocument;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;import java.util.UUID;@RestController@RequestMapping("solr")public class SolrController { @Autowired private SolrClient client; /** * 新增/修改 索引 * 当 id 存在的时候, 此方法是修改(当然, 我这里用的 uuid, 不会存在的), 如果 id 不存在, 则是新增 * @return */ @RequestMapping("add") public String add() { String uuid = UUID.randomUUID().toString().replaceAll("-", ""); try { SolrInputDocument doc = new SolrInputDocument(); doc.setField("id", uuid); doc.setField("studentName", "小王同学"); /* 如果spring.data.solr.host 里面配置到 core了, 那么这里就不需要传 new_core 这个参数 * 下面都是一样的 */ client.add("new_core", doc); //client.commit(); client.commit("new_core"); return uuid; } catch (Exception e) { e.printStackTrace(); } return "error"; } /** * 根据id删除索引 * @param id * @return */ @RequestMapping("delete") public String delete(String id) { try { client.deleteById("new_core",id); client.commit("new_core"); return id; } catch (Exception e) { e.printStackTrace(); } return "error"; } /** * 删除所有的索引 * @return */ @RequestMapping("deleteAll") public String deleteAll(){ try { client.deleteByQuery("new_core","*:*"); client.commit("new_core"); return "success"; } catch (Exception e) { e.printStackTrace(); } return "error"; } /** * 根据id查询索引 * @return * @throws Exception */ @RequestMapping("getById") public String getById() throws Exception { SolrDocument document = client.getById("new_core", "536563"); System.out.println(document); return document.toString(); } /** * 综合查询: 在综合查询中, 有按条件查询, 条件过滤, 排序, 分页, 高亮显示, 获取部分域信息 * @return */ @RequestMapping("search") public Map>> search(){ try { SolrQuery params = new SolrQuery(); //查询条件, 这里的 q 对应 下面图片标红的地方 params.set("q", "手机"); //过滤条件 params.set("fq", "product_price:[100 TO 100000]"); //排序 params.addSort("product_price", SolrQuery.ORDER.asc); //分页 params.setStart(0); params.setRows(20); //默认域 params.set("df", "product_title"); //只查询指定域 params.set("fl", "id,product_title,product_price"); //高亮 //打开开关 params.setHighlight(true); //指定高亮域 params.addHighlightField("product_title"); //设置前缀 params.setHighlightSimplePre(""); //设置后缀 params.setHighlightSimplePost(""); QueryResponse queryResponse = client.query(params); SolrDocumentList results = queryResponse.getResults(); long numFound = results.getNumFound(); System.out.println(numFound); //获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的 Map>> highlight = queryResponse.getHighlighting(); for (SolrDocument result : results) { System.out.println(result.get("id")); System.out.println(result.get("product_title")); //System.out.println(result.get("product_num")); System.out.println(result.get("product_price")); //System.out.println(result.get("product_image")); Map> map = highlight.get(result.get("id")); List list = map.get("product_title"); System.out.println(list.get(0)); System.out.println("------------------"); System.out.println(); } return highlight; } catch (Exception e) { e.printStackTrace(); } return null; }} 上述内容就是springboot如何整合solr,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
查询
字段
高亮
数据
条件
索引
结果
整合
内容
排序
成功
命令
技能
时候
知识
中文
测试
综合
配置
简明
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网中国科技
科技类互联网
科技制造互联网公司
腾讯科技 互联网女皇
互联网科技logo
深圳卡尔迅互联网科技有限公司怎么样
互联网科技实习生岗位职责
茂名市互联网科技产业园
互联网5g黑科技有哪些
电子科技大学互联网创业大赛
国大互联网教育科技有限公司工作
西安小鹰速贷互联网科技有限公司
互联网金融科技名词解释
美国互联网科技实力
厦门江牛科技互联网
济南小医互联网科技有限公司招聘
全球科技与互联网公司市值变化
吉林省码上互联网科技电话
北京军民互联网科技公司
小米移动互联网科技园
互联网科技网
鸠鸠互联网科技
中国互联网科技发展
银优互联网科技有限公司
中盈科技互联网信息有限公司
科技互联网的估值
长沙易易互联网科技有限公司
恒生互联网科技趋势
网互联网络科技