Skip to main content

moregeek program

Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一-多极客编程

原标题:Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一(Spring中国教育管理中心)

Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一_xml

3.1.Spring 命名空间

Spring Data Solr 模块包含一个自定义命名空间,允许定义存储库 bean 并具有用于实例化SolrClient.

使用该repositories元素查找 Spring Data 存储库,如创建存储库实例中所述。

以下示例显示了如何设置使用 Spring Data Solr 命名空间的 Solr 存储库:

示例 52. 使用命名空间设置 Solr 存储库

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">

<solr:repositories base-package="com.acme.repositories" />
</beans>

使用
solr-serverorembedded-solr-server元素SolrClient在上下文中注册一个实例。

以下示例显示了如何为 HTTP 设置 Solr 客户端:

示例 53.HttpSolrClient使用命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">

<solr:solr-client id="solrClient" url="https://locahost:8983/solr" />
</beans>

以下示例显示了如何设置负载平衡 Solr 客户端:

示例 54.LBSolrClient使用命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">

<solr:solr-client id="solrClient" url="https://locahost:8983/solr,http://localhost:8984/solr" />
</beans>

以下示例显示了如何设置嵌入式 Solr 服务器:

示例 55. EmbeddedSolrServer 使用命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">

<solr:embedded-solr-server id="solrClient" solrHome="classpath:com/acme/solr" />
</beans>

3.2.基于注解的配置

Spring Data Solr 存储库支持可以通过 XML 命名空间和通过 Java 配置使用注释来激活。

以下示例显示了如何使用 Java 配置设置 Solr 存储库:

示例 56.使用 Java 配置的 Spring Data Solr 存储库

@Configuration
@EnableSolrRepositories
class ApplicationConfig {

@Bean
public SolrClient solrClient() {
EmbeddedSolrServerFactory factory = new EmbeddedSolrServerFactory("classpath:com/acme/solr");
return factory.getSolrServer();
}

@Bean
public SolrOperations solrTemplate() {
return new SolrTemplate(solrClient());
}
}

前面的配置设置了一个EmbeddedSolrServer,由SolrTemplate. Spring Data Solr 存储库通过使用@EnableSolrRepositories注解激活,注解本质上带有与 XML 命名空间相同的属性。如果没有配置基础包,则使用配置类所在的包。

3.3.使用 CDI 设置 Solr 存储库

您还可以使用 CDI 来设置 Spring Data Solr 存储库,如以下示例所示:

示例 57.使用 Java 配置的 Spring Data Solr 存储库

class SolrTemplateProducer {

@Produces
@ApplicationScoped
public SolrOperations createSolrTemplate() {
return new SolrTemplate(new EmbeddedSolrServerFactory("classpath:com/acme/solr"));
}
}

class ProductService {

private ProductRepository repository;

public Page<Product> findAvailableProductsByName(String name, Pageable pageable) {
return repository.findByAvailableTrueAndNameStartingWith(name, pageable);
}

@Inject
public void setRepository(ProductRepository repository) {
this.repository = repository;
}
}

3.4.交易支持

Solr 对服务器级别事务的支持意味着自上次提交、优化或回滚以来的创建、更新和删除操作在服务器上排队,并作为一个组提交、优化或回滚。Spring Data Solr 存储库参与 Spring Managed Transactions 并在完成时提交或回滚更改。

以下示例显示了如何使用@Transactional注释来定义事务(在本例中为保存):

@Transactional
public Product save(Product product) {
Product savedProduct = jpaRepository.save(product);
solrRepository.save(savedProduct);
return savedProduct;
}

3.5.查询方法

本节介绍如何使用 Java 类中的方法创建查询。

3.5.1.查询查找策略

Solr 模块支持将查询手动定义为String或从方法名称派生。

目前没有 QueryDSL 支持。

声明的查询

从方法名称派生查询并不总是足够的,可能会导致方法名称不可读。在这种情况下,您可以使用 Solr 命名查询(参见“使用命名查询”)或使用@Query注释(参见“使用@Query注释”)。

3.5.2.查询创建

通常,Solr 的查询创建机制按照查询方法中的描述工作。下面的例子展示了什么是 Solr 查询方法:

示例 58. 根据方法名称创建查询

public interface ProductRepository extends Repository<Product, String> {
List<Product> findByNameAndPopularity(String name, Integer popularity);
}

前面的示例转换为以下 Solr 查询:

q=name:?0 AND popularity:?1

下表描述了 Solr 支持的关键字:

Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一_xml_02

Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一_xml_03

集合类型可以与“Like”、“NotLike”、“StartingWith”、“EndingWith”和“Containing”一起使用。

Page<Product> findByNameLike(Collection<String> name);

3.5.3.使用@Query注解

使用命名查询(请参阅“使用命名查询”)来声明实体查询是一种有效的方法,并且适用于少量查询。由于查询本身与执行它们的 Java 方法相关联,因此您实际上可以使用 Spring Data Solr@Query批注直接绑定它们。下面的例子使用@Query注解来声明一个查询:

示例 59. 使用@Query注释在方法中声明查询。

public interface ProductRepository extends SolrRepository<Product, String> {
@Query("inStock:?0")
List<Product> findByAvailable(Boolean available);
}

3.5.4.使用命名查询

命名查询可以保存在属性文件中并连接到相应的方法。您应该记住“查询查找策略”中描述的命名约定或使用@Query. 以下示例显示如何在属性文件中声明名称查询:

示例 60. 在属性文件中声明命名查询

Product.findByNamedQuery=popularity:?0
Product.findByName=name:?0

下面的示例使用findByName前面示例中声明的命名查询 ( ) 之一:

public interface ProductRepository extends SolrCrudRepository<Product, String> {

List<Product> findByNamedQuery(Integer popularity);

@Query(name = "Product.findByName")
List<Product> findByAnnotatedNamedQuery(String name);

}

3.6.文件映射

尽管 SolrJ 中已经支持实体映射,但 Spring Data Solr 附带了自己的映射机制(在下一节中描述)。

DocumentObjectBinder具有优越的性能。因此,如果您不需要客户映射,我们建议您使用它。您可以DocumentObjectBinder通过SolrJConverter在 内注册来切换到SolrTemplate。

©著作权归作者所有:来自51CTO博客作者IT胶囊的原创作品,请联系作者获取转载授权,否则将追究法律责任
Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一
https://blog.51cto.com/u_15326439/4889804

shell脚本之awk编辑器-多极客编程

一、工作原理 sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。 awk也是逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。执行结果可以通过print的功能将字段数据打印显示。 在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非

LAMP之Apache(一)-多极客编程

LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。 各组件的主要作用如下: (平台)Linux: 作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与

看我如何用云函数实现一个PC小程序代码包在线解密工具-多极客编程

前一段时间突发奇想,想白嫖腾讯云云函数的能力来实现无服务模式下 PC 端小程序包的在线解密(注意这里仅仅是做解密)。 因为业余时间以捣鼓有意思的东西作为娱乐活动,对于小程序技术这块本身理解也是比较深刻了,所以碰到相关需求都会首先去想:这 gie 能不能用云函数实现? 于是碰上这种有意思的功能自然想尝试用云函数去搞一下了,顺便积累下云开发经验,看看无服务器云函数到底可以做到什么程度。 开发前准备 开

PostgreSQL citus python环境搭建-多极客编程

背景 随着大数据技术的发展,我们现在开发的软件系统管理的数据量越来越大,特别是随着软件Saas的发展,各种软件都在向多租户平台发展,而当前大部分程序员是熟悉SQL语言的程序员,或者说只能够在SQL上进行开发,使用NoSQL、NewSQL数据库开发所花费的学习成本也是比较高的,随之,分布式关系型数据库诞生,今天给大家介绍的基于PostgreSQL的citus分布式数据库,就是一种适合Saas化、多租

CentOS 7.9x64 安装 达梦数据库(DM8)-多极客编程

CentOS 7.9x64 安装 达梦数据库(DM8) 标签(空格分隔): 达梦系列​ 一: 达梦数据库介绍 1.1:达梦数据库 DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化

QCon-OPPO大规模CV预训模型技术及实践-多极客编程

1 什么是预训练模型?为什么我们需要预训练模型?预训练模型是提升深度学习算法性能的一种常用手段。所谓预训练模型,可以概括为是某种深度学习的网络架构,并且包含这个网络架构在海量数据上训练好的一组权重。有了网络架构和权重后,我们就可以用它作为某一具体视觉任务的主干网络,并提供初始化参数。这样一来,具体的下游任务就有了一个较好的训练起点,在减少探索空间的同时,还能够实现更好的算法性能。​那么我们为什么需

web技术分享| css filter和getUserMedia的联合使用-多极客编程

设置CSS3 filter(滤镜) 属性 filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度)。 blur(px) 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊; grayscale(%) 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。

JavaScript数据结构之Object-多极客编程

Object 是 ECMAScript 中最常用的数据类型之一,很适合存储和在应用程序之间交互数据。Object 定义一组属性的无序集合,可以将其想象成一张散列表,其中的内容就是一组名/值对,值可以是数据或者函数。 而数组是一个有序集合,为了保证元素排列有序,相比 Object 来说会占用更多的内存空间。 本文将介绍 Object 使用中将用得到的方法。 1. Object.defineProp

【2022/1/4】TCP和websocket通讯-多极客编程

TCP和websocket通讯使用场景:通过网页控制硬件设备,或者硬件设备的信息显示到网页上所用技术PHP环境workerman实现原理启动一个​​websocket​​​服务端,进程启动的时候启动tcp,把tcp设置为​​websocket​​​的一个属性上​​socketArray​​​,然后在​​websocket​​​接受消息的回调里获取​​socketArray​​,循环取出tcp链接,

京东移动端组件库 React 版如约而来-多极客编程

京东零售开源项目 NutUI 是一套京东风格的轻量级移动端组件库,开发和服务于移动 Web 界面的企业级产品。随着 NutUI 的用户越来越多,社区交流群里对 React 版本的呼声也越来越高。我们响应社区的呼声,2021 年 6 月开始规划并启动 React 版的开发。经过长时间的研发与打磨,React 版终于要和大家见面了!NutUI 是一款京东风格的多端统一开发组件库,之前只有 Vue 语言

#yyds干活盘点#1.2 HTML5新的Input类型-多极客编程

HTML5拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。例如:color、date、datetime、datetime-local、email、month、number、range、search、tel、time、url、week注意:并不是所有的浏览器都主持新的input类型,不过已经可以在所有主流的浏览器中使用它们了。几十不被支持,仍然可以显示为常规文本域。1.Input类型

#yyds干货盘点#用SVG画一个月亮-多极客编程

用SVG画一个月亮 废话不多说,直接上代码 html: <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>中秋月亮倒影</title> <link rel="stylesheet" href="css/style.css">