SpringBoot集成Solr(二)搜索数据

news2024/10/5 14:17:14

SpringBoot集成Solr(二)搜索数据

1.1 构建查询条件

//创建 solr查询参数对象
SolrQuery query = new SolrQuery();
StringBuilder params = new StringBuilder();
params.append(" subject_s:*").append(text).append("*");
params.append(" OR keywords_s:*").append(text).append("*");
params.append(" OR summary_ik:*").append(text).append("*");
params.append(" OR content_ik:*").append(text).append("*");
params.append(" OR creationByName_s:*").append(text).append("*");
query.setQuery(params.toString());

  • 上面代码中左边的字符串是映射到solr中的实体属性,相当于数据库中的表字段,*表示匹配多位。

1.2 构建排序条件

//多个条件 构造方式
List<SolrQuery.SortClause> orders = new ArrayList<>();
orders.add(new SolrQuery.SortClause("topFlag_s", SolrQuery.ORDER.asc));
orders.add(new SolrQuery.SortClause("creationDate_s", SolrQuery.ORDER.desc));
query.setSorts(orders);

//单个条件构造方式一
SortClause sort = new SolrQuery.SortClause("topFlag_s", SolrQuery.ORDER.asc)
query.setSort(sort);

//单个条件构造方式二
query.setSort("topFlag_s",SolrQuery.ORDER.asc);

1.3 设置分页

//设置分页
query.setStart(Func.toInt(page.getCurrent() - 1)); //solr的分页是从0开始的
query.setRows(Func.toInt(page.getSize()));
  • 注意:solr的分页第一页其实是从0开始的,部分框架中分页插件第一页是从1开始的

1.4 设置高亮

//启动高亮显示 
query.setHighlight(true);
//指定需要高亮显示的属性
query.addHighlightField("subject_s");
query.addHighlightField("keywords_s");
query.addHighlightField("kmCategoryName_s");
//高亮显示的前缀
query.setHighlightSimplePre("<font color='red'>");
//高亮显示的后缀
query.setHighlightSimplePost("</font>");
  • 注意:这种方式设置的高亮是整个属性值全部高亮。

  • 例如:设置标题高亮

    在这里插入图片描述

  • 若想只高亮输入的关键字,则可以使用如下方式实现:
//在源字符串中匹配关键字,并指定关键字颜色、背景
public static String markSubstring(String original, String keyword) {
		Pattern pattern = Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(original);
		return matcher.replaceAll("<font style='background-color:#ffff00;color:#f00'>$0</font>");
}

1.5 执行查询

//执行查询
QueryResponse response = solrClient.query(query);
//检索到的数量
long numFound = response.getResults().getNumFound();
//处理文档
SolrDocumentList solrDocumentList = response.getResults();
// 初始化 DocumentObjectBinder对象
DocumentObjectBinder binder = new DocumentObjectBinder();
// 将查询结果 solrDocumentList对象转换为list对象
result = binder.getBeans(KnowledgeIk.class, solrDocumentList);
return result;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LVS负载均衡群集部署(LVS-NAT模型实例)

NAT模式 LVS负载均衡群集部署 LVS负载调度器&#xff1a;ens33&#xff1a;192.168.50.22 ens36&#xff1a;10.0.0.1&#xff08;vmnet1&#xff09; Web1 节点服务器1&#xff1a;192.168.50.56 Web2 节点服务器2&#xff1a;192.168.50.57 NFS服务器&#xff1a;192.168.5…

文本图片怎么转Excel?分享一些好用的方法

在处理数据时&#xff0c;Excel 是一个非常强大的工具&#xff0c;但有时候需要将文本和图片转换为 Excel 格式&#xff0c;这可能会让人感到困惑。在本文中&#xff0c;我们将介绍一些好用的方法&#xff0c;以便您能够轻松地将文本和图片转换成 Excel 格式。 将文本图片为Exc…

Mysql安装配置教程(超详细)(C盘、D盘均可安装)

Mysql安装配置教程&#xff08;超详细&#xff09;&#xff08;C盘、D盘均可安装&#xff09; mysql安装配置教程&#xff08;超详细&#xff09;&#xff08;C盘、D盘均可安装&#xff09;0x1 官网下载Mysql下载 0x2 选择安装模式0x3 Developer Default &#xff08;C盘安装&a…

冠达管理:哪里查中报预增?

中报季行将到来&#xff0c;投资者开端重视公司的成绩体现。中报预增是投资者最关心的论题之一&#xff0c;因为这意味着公司未来成绩的增加潜力。但是&#xff0c;怎么查找中报预增的信息呢&#xff1f;本文将从多个视点分析这个问题。 1.证券交易所网站 证券交易所网站是投资…

React18TS项目:配置react-css-modules,使用styleName

他的好处不说了 网上一堆文章一个能打的都没有&#xff0c; 添加开发依赖 pnpm add -D dr.pogodin/babel-plugin-react-css-modules types/react-css-modules Babel Plugin "React CSS Modules" | Dr. Pogodin Studio 看dr.pogodin/babel-plugin-react-css-mo…

css学习3(三种样式表与样式控制优先级)

1、外部样式表&#xff1a;当样式需要应用于很多页面时&#xff0c;外部样式表将是理想的选择。在使用外部样式表的情况下&#xff0c;你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表&#xff0c;也要放到<head>中。 2、外部…

30W IP网络有源音箱 校园广播音箱

SV-7042XT是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。同时它可以外接一个30W的无源副音箱&#xff0c;用在面积较大的场所。5寸进口全频低音…

B. The Walkway - 思维

分析&#xff1a; 补题&#xff0c; 首先大体思路就是先算一遍没改变任何点时能够买到的物品&#xff0c;这一步可以通过看两点之间距离&#xff0c;之间能够包含几个d就说明会需要买几次物品&#xff0c;对于两侧边界&#xff0c;可以将左侧设置为1 - d&#xff0c; 因为此时可…

SAP动态安全库存简介

动态安全库存:跑需求计划时,ERP系统按设置的库存方式自动计算出满足一定时间内可保障生产的库存数量 SAP动态安全库存的计算公式:动态安全库存=平均日需求*覆盖范围。 平均日需求=特定时期内的总需求/特定时期内的工作天数 覆盖范围指在没又货物供应的情况下,库存可以维…

arm:day4

1. 实现三盏灯的点亮 .text .global _start_start: led1初始化函数LED_INIT: 1 通过RCC_AHB4_ENSETR寄存器&#xff0c;设置GPIOE F组控制器使能 0x50000A28[5:4]1ldr r0,0X50000A28ldr r1,[r0]orr r1,r1,#(0X3<<4)str r1,[r0] 2.1 通过GPIOE_MODER寄存器&#xff0c;…

UNIQUE VISION Programming Contest 2023 Summer(AtCoder Beginner Contest 312)F题题解

文章目录 [Cans and Openers](https://atcoder.jp/contests/abc312/tasks/abc312_f)问题建模问题分析1.分析每种物品的优先级2.分析最终选取物品与每种物品的关系代码 Cans and Openers 问题建模 给定n个物品&#xff0c;物品里有三种&#xff0c;第一种可以直接选取&#xff…

VGG分类实战:猫狗分类

关于数据集 数据集选择的是Kaggle上的Cat and Dog&#xff0c;猫狗图片数量上达到了上万张。你可以通过这里进入Kaggle下载数据集Cat and Dog | Kaggle。 在我的Github仓库当中也放了猫狗图片各666张。 VGG网络 VGG的主要特点是使用了一系列具有相同尺寸 3x3 大小的卷积核进…

Dodaf架构的学习分享

一.Dodaf的内容 Dodaf的背景 DODAF&#xff08;Department of Defense Architecture Framework&#xff09;起源于美国国防部&#xff0c;是一个用于支持复杂系统设计、规划和实施的架构框架。以下是DODAF的背景和起源&#xff1a; 复杂系统需求&#xff1a;在军事和国防领域&…

VS2019生成的DLL,给QT(MinGW版本)使用的小结

VS2019端&#xff1a; a 基于生成一个DLL的工程&#xff08;要注意生成是x86&#xff0c;还是x64的&#xff0c;需要和后面的QT的App工程对应&#xff09;&#xff0c;这里不多解释了&#xff0c;网上多的是&#xff1b; b 在cpp实现文件里&#xff0c;假如要导出一个这样的…

Vue 项目运行 npm install 时,卡在 sill idealTree buildDeps 没有反应

解决方法&#xff1a;切换到淘宝镜像。 以下是之前安装的 xmzs 包&#xff0c;用于控制切换淘宝镜像。 该截图是之前其他项目切换淘宝镜像的截图。 切换镜像后&#xff0c;顺利执行 npm install 。

图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

然后我们再来看如何删除节点 可以看到首先 我们这里 比如我要删除张三 可以看到 match (n:student) where n.name = "张三" delete n 这样就是删除了student集合中,name是张三的节点 然后我们再来看 如何来删除关系 match (n:student)-[r]->(m:student) where…

视频监控集中存储如何做?它的难点在哪?

视频监控集中存储是指将多个视频监控摄像头所捕捉到的视频信号集中存储于一个中央设备&#xff0c;这个中央设备可以是服务器、网络存储设备或其他专用设备。通过集中存储&#xff0c;可以避免因为存储设备分散而导致的管理不便和难以有效地管理和检索视频数据&#xff0c;同时…

【ES6】—使用 const 声明

一、不属于顶层对象window 使用const关键字 声明的变量&#xff0c;不会挂载到window属性上 const a 5 console.log(a) console.log(window.a) // 5 // undefined二、不允许重复声明 使用const关键字不允许重复声明相同的变量 cosnt a 5 cosnt a 6 // Uncaught SyntaxEr…

prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)

介绍&#xff1a; ChatGPT Prompt Engineering Learning Notesfor Developers (面向开发者的ChatGPT提问工程学习笔记) 课程简单介绍了语言模型的工作原理&#xff0c;提供了最佳的提示工程实践&#xff0c;并展示了如何将语言模型 API 应用于各种任务的应用程序中。 此外&am…

python 自动化学习(四) pyppeteer 浏览器操作自动化

背景 之前我在工作中涉及到了很多地方都是重复性的页面点点点工作&#xff0c;又因为安全保密原则不开放接口和数据库&#xff0c;只有一个页面来提供点击进行操作&#xff0c;就想着用前面学的自动化来实现&#xff0c;但发现前面学的模拟操作对浏览器来说并没有那么友好&…