购物商城网站开发公司,黄骅贴吧新闻,湖南常德房价,网站开发和软件开发环境准备 安装 Solr #xff1a;从 Solr 官网#xff08;Welcome to Apache Solr - Apache Solr#xff09;下载并安装最新版本#xff0c;然后通过命令 bin/solr start 启动 Solr 服务#xff0c;使用 bin/solr create -c mycore 创建一个新的 Solr 核心。 安装 JDK 从 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 文件中添加以下依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-solr/artifactId
/dependency
此依赖会自动配置 Spring Data Solr 的相关组件包括 Solr 客户端和 Spring Solr 支持。
配置 Solr 连接
在 application.properties 或 application.yml 文件中添加 Solr 的连接配置示例如下 application.properties spring.data.solr.hosthttp://localhost:8983/solr
spring.data.solr.coremycore 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 {IdFieldprivate 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 SolrCrudRepositoryProduct, String {ListProduct 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 ListProduct 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 ListProduct 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?nameLaptop 删除产品 发送 DELETE 请求删除产品 curl -X DELETE http://localhost:8080/products/1