当前位置: 首页 > news >正文

Spring Boot 集成 Solr 的详细步骤及示例

环境准备

  • 安装 Solr :从 Solr 官网(Welcome to Apache Solr - Apache Solr)下载并安装最新版本,然后通过命令 bin/solr start 启动 Solr 服务,使用 bin/solr create -c mycore 创建一个新的 Solr 核心。

  • 安装 JDK :确保安装了 JDK 8 及以上版本。

  • 配置 Maven :以 Maven 作为项目构建工具,创建 Spring Boot 项目。

添加依赖

在 Spring Boot 项目的 pom.xml 文件中添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

此依赖会自动配置 Spring Data Solr 的相关组件,包括 Solr 客户端和 Spring Solr 支持。

配置 Solr 连接

application.propertiesapplication.yml 文件中添加 Solr 的连接配置,示例如下:

  • application.properties

    spring.data.solr.host=http://localhost:8983/solr
    spring.data.solr.core=mycore
  • application.yml

    spring:data:solr:host: http://localhost:8983/solrcore: mycore

    定义实体类

    创建一个实体类用于映射 Solr 中的文档,示例如下:

    package cn.juwatech.model;import org.apache.solr.client.solrj.beans.Field;
    import org.springframework.data.annotation.Id;
    import org.springframework.data.solr.core.mapping.SolrDocument;@SolrDocument(collection = "mycore")
    public class Product {@Id@Fieldprivate String id;@Fieldprivate String name;@Fieldprivate String description;@Fieldprivate double price;// Getters and Setters
    }

    其中,@SolrDocument(collection = "mycore") 指定了 Solr 的核心名称,@Field 注解用于将实体类的字段映射到 Solr 文档的字段。

    编写 Repository 接口

    创建一个继承自 SolrCrudRepository 的接口来操作 Solr 中的数据,示例如下:

    package cn.juwatech.repository;import cn.juwatech.model.Product;
    import org.springframework.data.solr.repository.SolrCrudRepository;import java.util.List;public interface ProductRepository extends SolrCrudRepository<Product, String> {List<Product> findByNameContaining(String name);
    }

    通过继承 SolrCrudRepository 接口,可方便地进行文档的增删改查操作,findByNameContaining 方法可用于按名称模糊查询。

    创建 Service 与 Controller

  • 创建 Service :封装业务逻辑,示例如下:

    package cn.juwatech.service;import cn.juwatech.model.Product;
    import cn.juwatech.repository.ProductRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;import java.util.List;@Service
    public class ProductService {@Autowiredprivate ProductRepository productRepository;public void saveProduct(Product product) {productRepository.save(product);}public List<Product> searchByName(String name) {return productRepository.findByNameContaining(name);}public void deleteProduct(String id) {productRepository.deleteById(id);}
    }
  • 创建 Controller :处理 HTTP 请求,示例如下:

    package cn.juwatech.controller;import cn.juwatech.model.Product;
    import cn.juwatech.service.ProductService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
    @RequestMapping("/products")
    public class ProductController {@Autowiredprivate ProductService productService;@PostMappingpublic void addProduct(@RequestBody Product product) {productService.saveProduct(product);}@GetMapping("/search")public List<Product> searchProducts(@RequestParam String name) {return productService.searchByName(name);}@DeleteMapping("/{id}")public void deleteProduct(@PathVariable String id) {productService.deleteProduct(id);}
    }

    示例运行与测试

  • 添加产品 :启动 Spring Boot 应用后,发送 POST 请求添加产品,如使用 curl 命令:

    curl -X POST -H "Content-Type: application/json" -d '{"id":"1","name":"Laptop","description":"High performance laptop","price":1000}' http://localhost:8080/products
  • 搜索产品 :发送 GET 请求搜索产品:

    curl http://localhost:8080/products/search?name=Laptop
  • 删除产品 :发送 DELETE 请求删除产品:

    curl -X DELETE http://localhost:8080/products/1

相关文章:

Spring Boot 集成 Solr 的详细步骤及示例

环境准备 安装 Solr &#xff1a;从 Solr 官网&#xff08;Welcome to Apache Solr - Apache Solr&#xff09;下载并安装最新版本&#xff0c;然后通过命令 bin/solr start 启动 Solr 服务&#xff0c;使用 bin/solr create -c mycore 创建一个新的 Solr 核心。 安装 JDK &am…...

Nemotron-Research-Tool-N1 如何提升大语言模型工具使用能力?

Nemotron-Research-Tool-N1如何提升大语言模型工具使用能力&#xff1f; 如今&#xff0c;大语言模型&#xff08;LLMs&#xff09;发展迅猛&#xff0c;给它配备外部工具成为研究热点。但传统方法存在不少问题。这篇论文提出的Nemotron-Research-Tool-N1系列模型带来新突破&a…...

OpenCV进阶操作:图像直方图、直方图均衡化

文章目录 一、图像直方图二、图像直方图的作用三、使用matplotlib方法绘制直方图2.使用opencv的方法绘制直方图&#xff08;划分16个小的子亮度区间&#xff09;3、绘制彩色图像的直方图 四、直方图均衡化1、绘制原图的直方图2、绘制经过直方图均衡化后的图片的直方图3、自适应…...

Android控件VideoView用法

一 控件UI <VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter" /> 二 配置 <?xml version="1.0" encoding="u…...

人工智能数学基础(十)—— 图论

图论作为数学的重要分支&#xff0c;为人工智能提供了强大的建模和分析工具。无论是社交网络分析、路径规划还是数据结构设计&#xff0c;图论都发挥着不可替代的作用。今天&#xff0c;我将带领大家深入浅出地探索图论的核心概念&#xff0c;并结合 Python 实例&#xff0c;让…...

深入探索Anthropic Claude与Spring AI的融合应用

深入探索Anthropic Claude与Spring AI的融合应用 前言 在人工智能的蓬勃发展进程中&#xff0c;自然语言处理领域不断涌现出强大的模型和工具。Anthropic Claude系列基础AI模型凭借其出色的性能&#xff0c;在各种应用场景中展现出巨大潜力&#xff0c;为开发者和企业提供了丰…...

Python爬虫实战:获取优美图库各类高清图片,为用户提供设计素材

一、引言 在互联网时代,高清壁纸资源丰富多样,而优美图库作为一个提供大量精美壁纸的网站,吸引了众多用户。通过 Python 爬虫技术,可以自动化地从该网站获取所需的壁纸资源,为用户节省时间和精力。然而,网站通常会采取反爬措施来防止数据被恶意抓取,因此需要在爬虫程序…...

Java常用注解大全(基于JDK17+SpringBoot3)

一、基础注解(Java原生) 编译相关 @Override:方法重写校验 java 复制 下载 @Override public String toString() { return "CustomObj"; } @Deprecated:标记过时元素 java 复制 下载 @Deprecated(since="1.8", forRemoval=true) public void oldMethod…...

【NLP】30. 深入理解 In-Context Learning 的核心机制与策略

In-Context Learning&#xff08;ICL&#xff09;详解&#xff1a;提示学习时代的语言理解 一、什么是 In-Context Learning&#xff08;ICL&#xff09;&#xff1f; In-Context Learning 是指&#xff1a; 不改变模型参数&#xff0c;通过在输入中加入示例&#xff08;demon…...

数字化工厂中央控制室驾驶舱系统 - Windows 部署笔记

数字化工厂中央控制室驾驶舱系统 - Windows 部署笔记 环境准备 这篇笔记记录了我在 Windows 10/11 上部署数字化工厂中央控制室驾驶舱系统的全过程&#xff0c;包括各种常见问题的解决方法。部署过程中使用了国内镜像源来加快下载速度。 前置需求 Python&#xff1a;3.8 到…...

数据库的原子事务

原子事务 11.1 全有或全无效应 二级索引需要原子性的多键更新&#xff0c;这不仅对数据库内部一致性至关重要&#xff0c;也对应用数据的一致性非常有用&#xff08;例如考虑账户余额和账户交易&#xff09;。 我们将放弃get-set-del接口&#xff0c;并添加一个新的接口来允…...

基于51单片机的红外人体感应报警器

基于51单片机的人体监测报警 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;PCB&#xff09; 功能介绍 具体功能&#xff1a; 1.按下报警按钮会发生红LED蜂鸣器声光报警&#xff1b; 2.若检测到人&#xff0c;黄LED打开&#xff1b; 3.按下布防按键&…...

从Excel到高级工具:数据分析进阶指南

从Excel到高级工具&#xff1a;数据分析进阶指南 在数据分析的世界里&#xff0c;Excel曾经是众多人的第一站。它简单、直观、功能强大&#xff0c;从普通用户到专业人士&#xff0c;无不对其依赖。然而&#xff0c;随着数据规模增长、分析需求升级&#xff0c;Excel渐渐显得力…...

Excel VBA 自定义函数

一、VBA 函数基础概念 在 Excel VBA 中&#xff0c;函数主要分为两种类型&#xff1a; Sub 过程&#xff1a;执行操作但不返回值Function 函数&#xff1a;执行操作并返回结果 基本语法示例 1. Function 函数示例 定义一个返回字符串的公共函数 Public Function GetGreetin…...

004-nlohmann/json 快速认识-C++开源库108杰

了解 nlohmann/json 的特点&#xff1b;理解编程中 “数据战场”划分的概念&#xff1b;迅速上手多种方式构建一个JSON对象&#xff1b; 1 特点与安装 nlohmann/json 是一个在 github 长期霸占 “JSON” 热搜版第1的CJSON处理库。它的最大优点是与 C 标准库的容器数据&#xf…...

【Quest开发】接入语音转文字

参考官方文档&#xff1a;https://developers.meta.com/horizon/documentation/unity/voice-sdk-tutorials-overview 软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 注意&#xff1a;需全程科学上网 Meta提供了一…...

Vim 命令从头学习记录

学习链接&#xff1a;eleon-vim基础教程 Vim - 基础翻屏操作 光标移动&#xff1a;hjkl 20j 向下移动20行&#xff0c;w 向后移动一个字符&#xff0c;b 向前移动一个字符。 Ctrl u 向上翻半页 UP Ctrl d 向下翻半页 Down Ctrl f 向下翻整页 Forward Ctrl b 向上翻整页 …...

[Linux]物理地址到虚拟地址的转化

[Linux]物理地址到虚拟地址的转化 水墨不写bug 文章目录 一、再次认识地址空间二、页表1、页表的结构设计2、页表节省了空间&#xff0c;省在哪里&#xff1f;3、页表的物理实现 一、再次认识地址空间 OS和磁盘交互的内存基本单位是4KB&#xff0c;这4KB通常被称为内存块。OS对…...

js获取明天日期、Vue3大菠萝 Pinia的使用

直接上代码 const today new Date(2019, 2, 28) const finalDate new Date(today) finalDate.setDate(today.getDate() 3)console.log(finalDate) // 31 March 2019 安装 yarn add pinia # or with npm npm install pinia创建第一个store仓库 1、在src目录下创建store目录…...

矩阵置零(中等)

可以用两个标记数组分别记录每一行和每一列是否有零出现。 首先遍历该数组一次&#xff0c;如果某个元素为 0&#xff0c;那么就将该元素所在的行和列所对应标记数组的位置置为 true。然后再次遍历该数组&#xff0c;用标记数组更新原数组。 class Solution {public void set…...

GZ人博会自然资源系统(测绘)备考笔记

本文为备考 GZ人才博览会自然资源系统&#xff08;测绘&#xff09; 的笔记&#xff0c;包括若干 知识点整理 及 近两年考核&#xff08;面试&#xff09;真题 &#xff08;文末附《GZ人博会自然资源系统&#xff08;测绘&#xff09;备考笔记》1 的下载链接&#xff09;。 目录…...

《进制转换的终极指南:原理、方法与编程应用》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、进制转换的基本原理二、进制转换方法总结&#xff08;一&#xff09;使用权重法的转换1. 二进制 → 十进制2. 八进制 → 十进制3. 十六进制 → 十进制 &…...

2025系统架构师---论软件的设计模式论文

2023 年,我所在的公司承担了某部网络靶场的研发任务。我作为公司的技 术总监,希望能打造基于网络靶场的系列产品,参与到项目的设计中,以期开发 扩展性和可维护性良好的网络靶场,为以后的产品开发打下基础。网络靶场是网 络安全技术研究的基础支撑平台,它利用虚拟的和实物…...

嵌入式Linux驱动学习

Ubuntu18 下载链接 https://releases.ubuntu.com/bionic/ Ubuntu配置静态IP 更新Ubuntu18的镜像源 以清华大学镜像源举例 网站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ 第一步点开网站搜索ubuntu然后点击问号 第二步选择自己的Ubuntu版本 第三步在Ubuntu中复制…...

基于大模型的子宫腺肌病全流程预测与诊疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、子宫腺肌病概述 2.1 疾病定义与病理机制 2.2 流行病学特征 2.3 现有诊断与治疗方法综述 三、大模型技术原理与应用基础 3.1 大模型简介 3.2 在医疗领域的应用现状 3.3 适用于子宫腺肌病预测的可行性分析…...

Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切

​一、软件介绍 文末提供程序和源码下载 Notebook.ai 开源程序是一套工具&#xff0c;供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切。 二、软件特点 Notebook 是作家的规划工具&#xff0c;用于创建从宇宙到角色、情节到单个项目的任何内容。通过浏览器、…...

关于 dex2oat 以及 vdex、cdex、dex 格式转换

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ dex2oat dex2oat 是 Android 系统中的一个核心工具&#xff0c;负责将应用中的 .dex&#xff08;Dalvik Executable&#xff09;字节码编译为本地机器代码&am…...

Java---Object和内部类

Object类和内部类 前言&#xff1a;一、Object类1.object类初识2.Object的方法2.(1).获取对象的信息--toString方法2.(2).对象比较equals方法2.(3).hashCode方法 二、内部类1.内部类初识&#xff1a;2.内部类的分类&#xff1a;2.(1).实例内部类2.(2).静态内部类2.(3).匿名内部…...

【OSPF协议深度解析】从原理到企业级网络部署

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心配置实现案例1&#xff1a;单区域基础配置案例2&#xff1a;多区域配置案例3&#xff1a;安全认证配置 运行…...

linux tar命令详解。压缩格式对比

1.压缩格式对比 压缩格式命令选项文件扩展名压缩率速度无压缩-cvf.tar无最快gzip-czvf.tar.gz中等较快bzip2-cjvf.tar.bz2较高较慢xz-cJvf.tar.xz最高最慢 9. 更多参考 【Linux基础】文件压缩tar命令指南tar压缩方式对比...

C++和Lua混和调用

为什么要C/C 流行的语言&#xff0c;学习人员多高性能&#xff0c;对于嵌入式设备则是省电大量的第三方库 为什么要Lua C缺点&#xff1a;编译慢&#xff0c;调试难&#xff0c;学习难度大Lua优点&#xff1a; 最快的脚本语言可以编译调试与C/C结合容易Lua是对性能有要求的必…...

Cadence高速系统设计流程及工具使用

上一章已经谈到&#xff0c;在Cadence的高速设计流程中&#xff0c;有两个重要的工具SigXP和Constrain Manager&#xff08;CM约束管理器&#xff09;。SigXP是仿真分析工具和约束生成工具&#xff0c;我们就是使用这个工具对关键信号进行仿真的。SI工程师通过对仿真结果的分析…...

Unity:AddTorque()(增加旋转力矩)

目录 什么是 AddTorque()&#xff1f; 第一性原理出发&#xff1a;什么是 Torque&#xff08;力矩&#xff09;&#xff1f; Torque 公式 Unity 中 AddTorque 的工作原理 参数属性 &#x1f50d; Linear Drag&#xff08;线性阻力&#xff09; 线性阻力模拟的现实情况&…...

嵌入式硬件设计全解析:从架构到实战

一、嵌入式硬件设计核心架构与系统组成​ 1. 处理器选型与架构设计​ (1)处理器类型与应用场景​ 处理器类型​ 代表架构 / 型号​ 典型应用场景​ 核心优势​ 微控制器(MCU)​ ARM Cortex-M3/M4、STM32F 系列​ 低功耗控制、小型设备​ 集成外设、低功耗、低成本​ 微处…...

R7打卡——糖尿病预测模型优化探索

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 1.检查GPU import torch.nn as nn import torch.nn.functional as F import torchvision,torch# 设置硬件设备&#xff0c;如果有GPU则使用&#xff0c;没有…...

win10开了移动热点,手机无法连接,解决办法(chatgpt版)

提问&#xff1a; win10连着网线上网&#xff0c;有无线网卡intel Wireless-AC 9560网卡 可以用电脑开移动热点给手机连接吗&#xff1f;如何设置&#xff1f;我现在可以开热点&#xff0c;但是手机连不上&#xff0c;显示正在获取ip地址后就连不上了 chatgpt回答&#xff1a…...

下载core5compat 模块时,被禁止,显示 - servese replied: Forbbidden. -->换镜像源

怎么解决&#xff1f; --->换镜像源 方法 1&#xff1a;使用命令行参数指定镜像源 在运行 Qt 安装器时&#xff0c;通过 --mirror 参数指定镜像源&#xff1a; # Windows qt-unified-windows-x64-online.exe --mirror https://mirrors.ustc.edu.cn/qtproject# Linux/macO…...

《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-《用无人机仿真玩转PID控制:MATLAB四旋翼仿真建模全攻略》

《MATLAB实战训练营&#xff1a;从入门到工业级应用》高阶挑战篇-✈️ 用无人机仿真玩转PID控制&#xff1a;MATLAB四旋翼仿真建模全攻略 &#x1f681; 欢迎来到这篇超级详细的MATLAB四旋翼无人机仿真教程&#xff01;无论你是控制理论爱好者、无人机发烧友&#xff0c;还是M…...

GESP2024年3月认证C++八级( 第二部分判断题(1-5))

孙子定理参考程序&#xff1a; #include <iostream> #include <vector> using namespace std;// 扩展欧几里得算法&#xff1a;用于求逆元 int extendedGCD(int a, int b, int &x, int &y) {if (b 0) {x 1; y 0;return a;}int x1, y1;int gcd extende…...

PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡

PHP的现代复兴&#xff1a;从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡 一、PHP的历史误解与现实真相 1.1 被固化的陈旧认知 当卓伊凡浏览知乎上关于PHP的讨论时&#xff0c;发现大量回答仍然停留在十年前的刻板印象中。这些误解包括但不限于&#xff1a; “PHP只…...

手表功能RunModeTasks

RunModeTasks 功能解释 “RunModeTasks 执行特定于当前模式的功能 根据模式控制作行为”这句话是指 OV-Watch 智能手表项目中的一组任务&#xff0c;这些任务负责管理设备的运行模式并根据不同模式控制设备的行为。 主要组成部分 RunModeTasks 主要由以下三个部分组成&#…...

Qt6.8中进行PDF文件读取和编辑

1.环境配置 在 .pro 文件中添加 PDF 模块依赖&#xff1a; QT core gui pdf # 添加 pdf 模块 注意&#xff1a;独立 pdf 模块的起始版本是Qt 5.15&#xff0c;建议需要 PDF 功能的开发者优先选择此版本或更高版本 2.读取PDF 文件 核心类&#xff1a;QPdfDocument&#xf…...

Barrett Reduction算法优化:更紧的界限消除冗余的减法

1. 引言 Barrett Reduction 是一种被广泛使用的模 m m m 运算算法。在zkSecurity 受NEAR团队所委托的&#xff08;针对RustCrypto: NIST P-256 (secp256r1) elliptic curve——https://github.com/RustCrypto/elliptic-curves/tree/master/p256&#xff09;进行的 Rust p256 …...

Node.js 是什么?

Node.js 是什么? Node.js 是一个基于 Chrome V8 JavaScript 引擎 的 跨平台 JavaScript 运行时环境,用于在服务器端运行 JavaScript 代码。它使开发者能够使用 JavaScript 编写后端(服务端)程序,而不仅仅局限于浏览器端(前端)。 1. Node.js 的核心特点 (1) 基于 Chrom…...

数据结构中 数组、链表、图的概念

数据结构是计算机存储、组织数据的方式&#xff0c;数组、链表和图是三种常见的数据结构&#xff0c;下面为你详细介绍它们的概念&#xff1a; 数组 数组是一种线性数据结构&#xff0c;它由一组相同类型的元素组成&#xff0c;这些元素存储在连续的内存位置上。每个元素都可…...

基于PPO的自动驾驶小车绕圈任务

1.任务介绍 任务来源: DQN: Deep Q Learning &#xff5c;自动驾驶入门&#xff08;&#xff1f;&#xff09; &#xff5c;算法与实现 任务原始代码: self-driving car 在上一篇使用了DDPG算法完成自动驾驶小车绕圈任务之后&#xff0c;继续学习了PPO算法&…...

Three.js + React 实战系列 - 客户评价区细解教程 Clients 组件✨(回答式评价 + 评分星级)

对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦&#xff01;&#xff01;谢谢大家&#xff01;&#xff01;&#xff01; 在这篇博客中&#xff0c;我们将实现一个简洁的 Hear from My Clients 客户评价区域。这个区块在个人主页中可以突显用户体验和专业度&#xff0c;帮…...

2048游戏(含Python源码)

前言 相关参考游戏&#xff1a; 像素飞机大战&#xff08;含Python源码&#xff09;-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/147693018?spm1001.2014.3001.5501使用DeepSeek定制Python小游戏——以“俄罗斯方块”为例-CSDN博客https://blog.csdn.n…...

百度golang开发一面

讲一下数据库的事务机制&#xff1f;acid特性是靠什么实现的&#xff1f; 持久性 redo log 原子性 undo log 隔离性 MVCC或next-lock锁 四个隔离级别是什么&#xff0c;分别解决什么问题&#xff1f; 可串行化实现原理 mysql锁机制&#xff1f;介绍锁的类型&#xff0c;以及原理…...

【Springboot知识】Springboot计划任务Schedule详解

文章目录 Spring Boot 定时任务从原理到实现详解一、核心原理分析1. 架构分层2. 核心组件3. 线程模型 二、基础实现步骤1. 添加依赖2. 主类配置3. 定时任务类 三、高级配置技巧1. 自定义线程池2. 动态配置参数3. 分布式锁集成&#xff08;Redis示例&#xff09; 四、异常处理机…...