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

solr安装及ik中文分词器配置

提示:solr9.x版本需要jdk17+,solr8.x版本需要jdk8+

1、Solr 简介


Solr 是Apache 下的一个顶级开源项目,采用 Java 开发,它是基于 Lucene 的全文搜索服务器。Solr 提供了比 Lucene 更为丰富的查询语句,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
Solr 可以独立运行,运行在 Jetty、Tomact 等这些 Servlet 容器中,Solr 索引的实现方式很简答,用Post 方法向 Solr 服务器发送一些描述 Field 及其内容的 XML 文档,Solr 根据XML 文档添加、删除、更新索引。Solr索引只需要发送 HTTP GET 请求,然后对 Solr 返回 xml,json 等格式的查询结果进行解析,组织页面布局。Solr 不提供构建 UI 的功能。Solr 提供一个管理界面,通过管理界面可以查询到 Solr 的配置的和运行情况


1.1、Solr 下载与安装


Solr 下载地址:

链接一:http://archive.apache.org/dist/lucene/solr/

链接二:https://solr.apache.org/downloads.html

2.安装配置

下载完成之后,解压solr文件,解压tomcat

 2.1 在tomcat安装solr,并且建立solrCore

  1. 把solr8.11.4目录下的server/solr-webapp/webapp 重命名为solr,并且放置到tomcat/webapp的目录下。 
  2. 打开tomcat/webapp/solr/WEB-INF/web.xml
  3. 新建一个文件夹,不要中文目录,用来做solrHome,也就是solrCore的实例存放位置
  4. 在tomcat/webapp/solr/WEB-INF/web.xml中配置solr的地址
  5. 在tomcat/webapp/solr/WEB-INF/文件夹中,建立classes目录
  6. 把solr8.11.4/server/resource/log4j.* 复制到上一步建立的classes目录中
  7. 把solr8.11.4/server/lib/ext/目录下的所有jar文件复制到tomcat/webapp/solr/WEB-INF/lib/中,这是一些日志用的jar包,不然启动报错;把solr8.11.4/server/lib/下metrics*.jar相关的jar包复制到tomcat/webapp/solr/WEB-INF/lib/中,不然启动会报metrics相关错误。
  8. 这个时候,可以输入http://127.0.0.1:8080/solr/index.html来访问到solr的控制界面了。
  9. 接下来就是创建solrCore。
  10. 目前solrHome目录是空的,我们创建一个空文件夹core1,这个就是我们的一个实例,然后把solr8.11.4/server/solr/configsets/_default/conf/ 这个文件复制到solrHome/core1中。
  11. 把solr5.5/server/solr/solr.xml复制到solrHome目录下。
  12. 在solr的管理控制台界面,添加一个core1
  13. 这下就创建成功了一个实例core1,必须先操作11步确保有文件夹core1此时才能创建实例,实例与文件夹名称要一致。

2.2 安装ik中文分词器

ik中文分词器下载https://central.sonatype.com/artifact/com.github.magese/ik-analyzer

1.准备好ik分词器的jar包,可以自己编译,也可以下载我生成的。然后把它复制到tomcat/webapp/solr/WEB-INF/lib里面。(千万不要复制到tomcat/lib中,这样会找不到lucene的类)

2.打开solrHome/core1/conf/managed-schema文件,在最下方,追加如下配置

<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField"><analyzer type="index"><tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/><filter class="solr.LowerCaseFilterFactory"/></analyzer>
</fieldType><!--自定义字段-->
<!--IKAnalyzer Field-->
<!-- type="text_ik"代表使用了Ik中文分词器。 -->
<!-- indexed="true"代表进行索引操作。 -->
<!-- stored="true"代表将该字段内容进行存储。 -->
<field name="product_name" type="text_ik" indexed="true" stored="true" />
<field name="product_price" type="string" indexed="true" stored="true" />
<field name="product_picture" type="string" indexed="false" stored="true" />
<field name="product_description" type="text_ik" indexed="true" stored="true" />
<field name="product_catalog_name" type="string" indexed="true" stored="false" />

3.启动tomcat,即可看到text_ik分词

2.3 插入的文档必须与域相匹配

域,我个人也称它为字段,它在solr中有特定的含义,就类似数据库中表的列一样,规范着写入的数据,我们先来做个例子。

可以看到,我这次插入的文档,有id,title当然,在solr中,每一条记录都必须有着一个唯一的id,它就类似数据库中的主键,不可重复。这条记录的插入是成功的。

但是,如果我把title改成title1,这就与定义的字段不一样了,就会报错,如下图所示

可以看到,这里提示,未知的字段 title1.

2.4 域的定义 field

先拿出一条配置来看一下

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

 认识一下这些属性

  name:域名

  type:域的类型,必须匹配类型,不然会报错

  indexed:是否要作索引

  stored:是否要存储

  required:是否必填,一般只有id才会设置

  multiValued:是否有多个值,如果设置为多值,里面的值就采用数组的方式来存储,比如商品图片地址(大图,中图,小图等)

2.5 配置动态域 dynamicField

同样的,也先拿出一条来看看

<dynamicField name="*_i"  type="string"    indexed="true"  stored="true" multiValued="true" />

何谓动态域呢?就是这个域的名称,是由表达式组成的,只要名称满足了这个 表达式,就可以用这个域

 同样的认识一下这些属性

  name:域的名称,该域的名称是通过一个表达式来指定的,只要符合这这个规则,就可以使用这个域。比如  aa_i,bb_i,13_i等等,只要满足这个表达式皆可

  type:对应的值类型,相应的值必须满足这个类型,不然就会报错

  indexed:是否要索引

  stored:是否要存储

  ...其它的属性与普通的域一至

2.6 主键域 uniqueKey

给出一条配置

 <uniqueKey>id</uniqueKey>

指定一个唯一的主键,每一个文档中,都应该有一个唯一的主键,这个值不要随便改

2.7 复制域 copyField

给出一条配置

<copyField source="cat" dest="text"/>

说明一下相应的属性

  source:源域

  dest:目标域

复制域,将源域的内容复制到目标域中

注意:目标域必须是允许多值的,如下,nultiValued必须为true,因为可能多个源域对应一个目标域,所以它需要以数组来存储

<field name="text" type="string" indexed="true" stored="true" multiValued="true"/>

2.8 域的类型 fieldType

同样的给出一段配置,这段稍微有点复杂

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /><!-- in this example, we will only use synonyms at query time<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>--><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /><filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType>
   
给出相应属性的说明

  name:域的名称

  class:指定solr的类型

  analyzer:分词器的配置

    type: index(索引分词器),query(查询分词器)

    tokenizer:配置分词器

    filter:过滤器

2.9 业务字段的实际配置

经过上面的学习,差不多了解了一些常用的配置,如今我们用field来配置实际的业务字段,有属性如下

当然,中文分词还是要用的,因为我们在前面的  1.2  章节中,已经配置了一个fieldType的中文分词,所以我们现在一律用中文分词的域类型

主键的id就不需要配置了,默认已经把id配置为主键了,默认的配置如下

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

商品名称(需要分词,需要存储)

<field name="name" type="text_ik" indexed="true" stored="true"  /> 

商品分类(不需要分词,需要存储)

<field name="catalog" type="int" indexed="false" stored="true"  /> 

商品分类名称(需要分词,需要存储)

<field name="catalog_name" type="text_ik" indexed="true" stored="true"  /> 

商品价格(不分词,需要存储)

<field name="price" type="double" indexed="false" stored="true"  /> 

商品描述(需要分词,不需要存储)

<field name="description" type="text_ik" indexed="true" stored="false"  /> 

商品图片(不需要分词,需要存储)

<field name="picture" type="string" indexed="false" stored="true"  /> 

复制域的应用

前面我们了解了复制域,但是却不知道它的应用场景,现在我们结合实际情况来讲一下复制域

用户在搜索框搜索的时候,有可能输入的是商品名称,也有可能输入的是商品描述,也有可能输入的是一个商品类型,那么这些值的搜索,肯定在后台是对应一个域的,那么既然如此,我们就可以把这些域合并成一个,这样在后台只需要单独的对这一个域进行搜索就可以了

先定义一个目标域

<field name="keywords" type="text_ik" indexed="true" stored="false"  multiValued="true"/> 

复制域,把商品名称,商品描述,商品类型名称复制到上面的这个域中

<copyField source="name" dest="keywords"/>
<copyField source="catalog_name" dest="keywords"/>
<copyField source="description" dest="keywords"/>

相关文章:

solr安装及ik中文分词器配置

提示&#xff1a;solr9.x版本需要jdk17&#xff0c;solr8.x版本需要jdk8 1、Solr 简介 Solr 是Apache 下的一个顶级开源项目&#xff0c;采用 Java 开发&#xff0c;它是基于 Lucene 的全文搜索服务器。Solr 提供了比 Lucene 更为丰富的查询语句&#xff0c;同时实现了可配置、…...

详解LeetCode中用字符串实现整数相加,字符串转整数及其溢出处理详解

目录 题目背景 代码整体逻辑 变量初始化 逐位相加过程 处理最后进位 结果反转 示例演示 总结 在LeetCode中&#xff0c;有一道经典的算法题是实现两个字符串形式的非负整数相加&#xff0c;今天我们就来深入分析一段用C实现该功能的代码&#xff0c;探究其背后的逻辑与…...

vue学习笔记06

学习的课程地址&#xff1a;老杜Vue视频教程&#xff0c;Vue2&#xff0c;Vue3实战精讲&#xff0c;一套通关vue_哔哩哔哩_bilibili 1、vue程序初体验 2、vue核心技术(基础) 3、Vue组件化 前面参见&#xff1a; vue学习笔记01 vue学习笔记02 vue学习笔记03 vue学习笔记…...

如何查看自己抖音的IP属地?详细教程及如何修改

在当今互联网时代&#xff0c;IP属地信息已成为各大社交平台&#xff08;如抖音、微博、快手等&#xff09;展示用户真实网络位置的重要功能。以下是关于如何查看抖音IP属地的详细教程及常见问题解答&#xff0c;帮助您快速了解相关信息&#xff1a; 一、如何查看抖音账号的IP属…...

熟悉Linux下的编程

可能 目录 熟悉Linux下Python编程的含义及与非Linux环境编程的区别 一、核心含义解析 二、与非Linux环境的关键区别 三、典型应用场景对比 四、能力培养建议 openfoem的下载之路&#xff1a; 方法一&#xff1a;使用cd命令 方法二&#xff1a;使用快捷方式 方法三&am…...

Uniapp:获取当前定位坐标

目录 一、出现场景二、具体使用 一、出现场景 在项目的开发中&#xff0c;会出现打卡、定位当前位置的功能&#xff0c;那我们如何获取当前位置呢&#xff1f;这就需要使用getLocation来获取当前位置坐标 二、具体使用 uni.getLocation({type: wgs84, // 返回可以用于uni.op…...

GitHub实用手册

文章目录 一、GitHub 的定义二、GitHub 的主要功能三、GitHub 的优势四、GitHub 的使用相关工具GitSourcetreeGithub-Desktop 一、GitHub 的定义 GitHub 是一个基于 Git 的分布式版本控制系统&#xff0c;它允许开发者在本地和远程仓库中管理代码版本&#xff0c;支持多人协作…...

【从零实现高并发内存池】Central Cache从理解设计到全面实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

Dijkstra算法求解最短路径—— 从零开始的图论讲解(2)

前言 在本系列第一期:从零开始的图论讲解(1)——图的概念,图的存储,图的遍历与图的拓扑排序-CSDN博客 笔者给大家介绍了 图的概念,如何存图,如何简单遍历图,已经什么是图的拓扑排序 按照之前的学习规划&#xff0c;今天笔者将继续带大家深入了解图论中的一个核心问题&#x…...

Spring AI 发布了它的 1.0.0 版本的第七个里程碑(M7)

Spring AI 发布了它的 1.0.0 版本的第七个里程碑&#xff08;M7&#xff09;&#xff0c;下个月就是 RC1&#xff0c;紧接着就是 GA&#xff01;&#xff0c;对于我们 Java 开发者来说&#xff0c;这绝对是个值得关注的好消息&#xff01; 但是对于 Java 学习者来说&#xff0c…...

如何从 GitHub 镜像仓库到极狐GitLab?

最近 GitHub 封禁中国用户的事情闹得沸沸扬扬&#xff0c;虽然官方发布的报道说中国用户被限制登录是因为配置错误导致&#xff0c;已经撤回了更新&#xff0c;中国用户已经可以正常使用。但是这就像横在国内开发者和企业头上的“达摩克利斯之剑”。为了避免 GitHub 不可用而带…...

大象机器人推出myCobot 280 RDK X5,携手地瓜机器人共建智能教育机

摘要 大象机器人全新推出轻量级高性能教育机械臂 myCobot 280 RDK X5&#xff0c;该产品集成地瓜机器人 RDK X5 开发者套件&#xff0c;深度整合双方在硬件研发与智能计算领域的技术优势&#xff0c;实现芯片架构、软件算法、硬件结构的全栈自主研发。作为国内教育机器人生态合…...

在Android Studio中,`Settings`里的Gradle路径、环境变量以及`gradle - wrapper.properties`文件关联

在Android Studio中,Settings里的Gradle路径、环境变量以及gradle - wrapper.properties文件关联 Android Studio中Settings里的Gradle路径 在Android Studio的Settings(Preferences ) -> Build, Execution, Deployment -> Build Tools -> Gradle 中: Use defau…...

用react 写一个可左右滑动的柱状图

效果图 目录 效果图 ✅ 项目结构 &#x1f680; 创建项目步骤 1️⃣ 打开终端或命令行&#xff0c;创建新项目&#xff1a; 2️⃣ 安装 recharts 图表库&#xff1a; 3️⃣ 替换默认代码&#xff1a; 4️⃣ 启动项目&#xff1a; ✅ 项目结构 scrollable-bar-chart/ ├…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——MIPI LCD测试

1&#xff09;实验平台&#xff1a;正点原子ATK-DLMP257B开发板 2&#xff09;浏览产品&#xff1a;www.alientek.com 3&#xff09;全套实验源码手册视频下载&#xff1a;正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试——MIPI LCD测试4.3 MIPI LCD测试4.3.1 使…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——RS485串口测试

1&#xff09;实验平台&#xff1a;正点原子ATK-DLMP257B开发板 2&#xff09;浏览产品&#xff1a;www.alientek.com 3&#xff09;全套实验源码手册视频下载&#xff1a;正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试——RS485串口测试 第四章 ATK-DLMP257B功能…...

Sui 的工具生态简化了游戏开发者的 Web3 集成流程

希望利用 Web3 独特协同效应的游戏开发者&#xff0c;常常在强大的区块链功能与流畅的游戏体验之间难以权衡。许多区块链方案要求大幅重构游戏基础架构&#xff0c;增加了开发难度&#xff0c;甚至需要学习全新的智能合约语言。而 Sui 通过直观的工具消除这一阻力&#xff0c;使…...

Vue 3 的组合式 API-hooks

Vue 3 的组合式 API 组合式 API 是 Vue 3 的核心特性之一&#xff0c;它允许开发者将组件的逻辑拆分为可复用的函数。组合式 API 的主要特点是 逻辑复用&#xff1a;将逻辑提取到独立的函数中&#xff0c;方便在多个组件中复用。组织清晰&#xff1a;将相关的逻辑分组&#x…...

AOSP Android14 Launcher3——底部任务栏Taskbar详解

前言&#xff1a;Launcher3中底部Taskbar和Navbar&#xff0c;或者说中文里面的术语导航栏&#xff0c;这几个词是很容易让人混淆的地方。本文要介绍的是Taskbar。从字面上意思来看&#xff0c;Taskbar就是任务栏&#xff0c;任务栏是Launcher3中一个重要的组件&#xff0c;尤其…...

QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(五)QGraphicsView的缩放和移动

QGraphicsView自带滚动条的显示&#xff0c;但是大部分的需求样式都不需要滚动条&#xff0c;并且要通过鼠标来控制视图的缩放和移动。需要重写QGraphicsView实现。 一、相关函数 1.scale void QGraphicsView::scale(qreal sx, qreal sy) 按&#xff08;sx&#xff0c;sy&…...

算法——果蝇算法

果蝇算法&#xff08;Fruit Fly Optimization Algorithm&#xff0c;FOA&#xff09;是一种受果蝇觅食行为启发而开发的群智能优化算法。以下从算法原理、算法流程、算法特点等方面为你详细讲述&#xff1a; 算法原理 果蝇本身具有优于其他物种的嗅觉和视觉。在觅食过程中&am…...

重返JAVA之路——图书管理系统

目录 一、功能介绍 二、设计模块 三、系统构建 1.book模块 2.operation模块 输入循环和验证 查找图书并处理借阅状态 未找到图书的处理 查找删除图书功能实现 未找到图书的处理 图书查找与归还 work方法实现图书信息输出 3. user模块实现 四、主菜单 一、功能介绍 …...

【16】数据结构之基于树的排序算法篇章

目录标题 选择排序简单选择排序树形选择排序 堆排序堆的定义Heap小跟堆大根堆堆的存储堆的代码设计堆排序的代码设计 排序算法综合比较 选择排序 基本思想&#xff1a;从待排序的序列中选出最大值或最小值&#xff0c;交换该元素与待排序序列的头部元素&#xff0c;对剩下的元…...

Uniapp:确认框

目录 一、 出现场景二、 效果展示三、具体使用 一、 出现场景 在项目的开发中&#xff0c;会经常出现删除数据的情况&#xff0c;如果直接删除的话&#xff0c;可能会存在误删&#xff0c;用户体验不好&#xff0c;所以需要增加一个消息提示&#xff0c;提醒用户是否删除。 二…...

pyswmm实现洪涝模拟

准备好.inp文件作为SWMM模型输入&#xff0c;调用pyswmm模块执行模拟&#xff0c;返回节点溢流量&#xff08;flooding&#xff09;作为积水量的初步表征。 代码&#xff1a; from pyswmm import Simulation, Nodes import pandas as pddef run_swmm_simulation(inp_file, ou…...

My Diary Pro:记录生活,珍藏回忆

我的日记My Diary Pro是一个非常好用的手机日记软件&#xff0c;可以使用它来记录每日生活日常&#xff0c;不少的用户可能都知道在生活之中可能会发生一些比较的重要的事情&#xff0c;实际上我们都可以将这些内容记录下来。包括个人观点&#xff0c;旅行游记&#xff0c;心情…...

CSRF(跨站请求伪造)漏洞概述

CSRF(跨站请求伪造)漏洞概述 一、​什么是 CSRF ​ 攻击者诱导已登录用户在不知情的情况下&#xff0c;对受信任网站执行未授权操作。 简单说&#xff1a;你登录着网站A&#xff0c;攻击者诱导你访问某个恶意链接&#xff0c;使网站A误以为是你自己发出的操作&#xff08;比…...

[Java实战经验]对象拷贝

目录 谨慎重写clone方法重写clone()支持深拷贝带来的问题 合适的深拷贝 首先&#xff0c;对于不可变的类&#xff0c;我们不应该实现Cloneable接口&#xff0c;因为不可变类不需要拷贝&#xff0c;直接引用即可&#xff0c;实现Cloneable接口只会造成浪费。 对于Java可变类来说…...

WAF防火墙:构筑Web应用安全的“隐形护盾”

在数字化时代&#xff0c;Web应用已成为企业服务与用户交互的核心窗口。然而&#xff0c;随之而来的SQL注入、跨站脚本攻击&#xff08;XSS&#xff09;、DDoS攻击等威胁&#xff0c;时刻考验着网站的安全防线。Web应用防火墙&#xff08;WAF&#xff09;作为关键防护工具&…...

开源智慧巡检——无人机油田AI视频监控的未来之力

油田巡检&#xff0c;关乎能源命脉&#xff0c;却常受困于广袤地形、高危环境和人工效率瓶颈。管道泄漏、设备故障、非法闯入——这些隐患稍有疏忽&#xff0c;便可能酿成大患。传统巡检已无法满足现代油田对安全与效率的需求&#xff0c;而无人机油田巡检系统正以智能化之力重…...

【2025年泰迪杯数据挖掘挑战赛】B题 完整论文 模型建立与求解

目录 2025年泰迪杯数据挖掘挑战赛 B题完整论文&#xff1a;建模与求解 Matlab代码一、问题重述二、模型假设与符号说明2.1 模型基本假设2.2 符号说明 三、数据预处理**问题一&#xff1a;志愿者身体活动信息的统计分析****问题二&#xff1a;身体活动MET值的实时估计模型构建**…...

Chromium 134 编译指南 macOS篇:安装 Xcode(二)

1. 引言 在Chromium开发的征程中&#xff0c;为macOS平台构建正确的开发环境是成功编译的关键基础。继上一篇系统环境准备后&#xff0c;本文将重点介绍Xcode的安装与配置过程。作为macOS上不可或缺的集成开发环境(IDE)&#xff0c;Xcode为Chromium 134的编译提供了必要的编译…...

软件定义网络(SDN):重塑未来网络的革命性架构

在当今数字化时代&#xff0c;网络已成为企业、云计算、5G通信和物联网&#xff08;IoT&#xff09;的核心基础设施。然而&#xff0c;传统网络架构由于其封闭、静态和分布式的特性&#xff0c;难以应对快速变化的业务需求。软件定义网络&#xff08;Software-Defined Networki…...

Java虚拟机面试题:类加载机制

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

OCCT 入门(3)核心模块与架构

文章目录 一、核心模块与架构1、架构概述2、核心模块3、数据流转3.1、几何创建&#xff08;Geometric Primitives&#xff09;3.2、拓扑构建&#xff08;Topology Construction&#xff09;3.3、模型处理&#xff08;Modeling Algorithms&#xff09;3.4、可视化&#xff08;Vi…...

MAC-​​需求​​:10万订单异步执行库存扣减、短信通知。

批量任务并行处理​​ 实现,通过拆分任务、异步执行和线程池管理提升处理。 ​​10万订单异步处理方案设计​​ 基于图中代码的批量处理框架,结合订单业务需求,以下是 ​​库存扣减与短信通知的异步实现​​: ​​1. 代码实现(基于原有框架改造)​​ @Service public…...

ArrayList vs LinkedList,HashMap vs TreeMap:如何选择最适合的集合类?

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 在 Java 开发中&#xff0c;集合类的选择直接影响程序的性能和代码的可维护性。不同的数据结构适用于不同的场景&#xff0c;盲目使用可能导致内存浪费、性能…...

使用Form.List且有Select组件

当在使用Form.List组件&#xff0c;且组件中有Select选项时&#xff0c;针对每一次选择&#xff0c;都要过滤掉那些已经选择过的选项&#xff0c;可能遇到的问题&#xff1a; 直接过滤会将每一个Select中的options选项都过滤掉&#xff0c;无法正常展示选择的选项 解决办法&a…...

大数据学习笔记

文章目录 1. 大数据概述1.1 大数据的特性1.2 大数据技术生态1.2.1 Hadoop 的概念特性1.2.2 Hadoop生态圈 — 核心组件与技术栈1.2.3 Hadoop生态演进趋势 2. 数据处理流程与技术栈2.1 数据采集2.1.1 日志采集工具2.1.2 实时数据流2.1.3 数据迁移 2.2 数据预处理2.2.1 批处理2.2.…...

Obsidian 文件夹体系构建 -INKA

Obsidian 文件夹体系构建 -INKA 本篇文章主要分享一下自己折腾学习实践过的 INKA 框架方法。原地址&#xff1a;Obsidian文件夹体系构建–INKA。 文章目录 Obsidian 文件夹体系构建 -INKA前言INKA简介INKA 理论最佳实践实际应用 反思 前言 上文 Obsidian文件夹体系构建-ACCES…...

QML与C++:基于ListView调用外部模型进行增删改查(性能优化版)

目录 引言相关阅读工程结构数据模型设计DataModel 类ContactProxyModel 类 为什么使用QSortFilterProxyModel&#xff1f;应用初始化与模型连接UI实现 性能分析与优化运行效果扩展思考总结下载链接 引言 在上一篇中介绍了基于ListView调用外部模型进行增删改查&#xff0c;本文…...

集合常用Stream操作

1、中间操作 filter()过滤 将流中的元素筛选出满足条件的元素 List<String> list Arrays.asList("abc","test","demo","frse","fesfes"); list.stream().filter(s -> s.startsWith("f")).forEach(Sy…...

ReactNative中处理安全区域问题

RN原生方案不支持android系统&#xff0c;所以在此使用三方组件react-native-safe-area-context 1、安装插件 yarn add react-native-safe-area-context2、安装完成后直接yarn ios可能会失败&#xff0c;需要先 cd ios && pod install && cd ..出来再继…...

二、The Power of LLM Function Calling

一、Function Calling 的诞生背景 1. 传统LLM的局限性 静态文本生成的不足&#xff1a;早期的LLM&#xff08;如早期版本的ChatGPT&#xff09;主要依赖预训练的知识库生成文本&#xff0c;但无法直接与外部系统或API交互。这意味着它们只能基于历史数据回答问题&#xff0c;…...

贪心算法day10(无重叠区间)

1.无重叠区间 435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; class Solution {public static int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(v1,v2)->{return v1[0]-v2[0];});int left interva…...

reactive 解构赋值给 ref

在 Vue 3 中&#xff0c;当你执行以下操作时&#xff1a; javascript const applyBasicInfo ref(); applyBasicInfo.value { ...props.applyBasicInfo }; 最终的 applyBasicInfo.value 是响应式对象&#xff0c;但与原对象 props.applyBasicInfo 的响应性完全独立&#xf…...

MongoDB简单用法

图片中 MongoDB Compass 中显示了默认的三个数据库&#xff1a; adminconfiglocal 如果在 .env 文件中配置的是&#xff1a; MONGODB_URImongodb://admin:passwordlocalhost:27017/ MONGODB_NAMERAGSAAS&#x1f4a1; 一、为什么 Compass 里没有 RAGSAAS 数据库&#xff1f;…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(4): 可能形(かのうけい)

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(4): 可能形(かのうけい) 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)~んです  復習(ふくしゅう)(2)いただけませんか 復習(ふくしゅう)(3)可能形(かのうけい)(1)1グループ:(2)2グループ…...

Windows 下 MongoDB ZIP 版本安装指南

在开发和生产环境中&#xff0c;MongoDB 是一种非常流行的 NoSQL 数据库&#xff0c;以其灵活性和高性能而受到开发者的青睐。对于 Windows 用户来说&#xff0c;MongoDB 提供了多种安装方式&#xff0c;其中 ZIP 版本因其灵活性和轻量级的特点&#xff0c;成为很多开发者的首选…...

万字长篇————C语言指针学习汇总

经过一段时间的学习&#xff0c;我们已经接触到了C语言的很多知识了。不过目前我们接下来我们要接触C语言中一个最大的“门槛”&#xff1a;指针。 什么是指针&#xff1f; 在介绍指针之前&#xff0c;我们首先要明白变量与地址之间的关系。 举一个生活中的案例&#xff1a;一…...