SpringBoot集成Solr所遇问题

使用Solr所遇问题记录

Solr 页面创建core

  • 错误信息:
Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Multiple [schema.xml] fieldType registered to the same name: text_ik ignoring: text_ik{class=org.apache.solr.schema.TextField,analyzer=org.apache.solr.analysis.TokenizerChain,args=null} 
  • 原因分析:

这个错误表明在创建新的 Solr core 时出现了冲突,原因是有多个名为 text_ik 的 fieldType 在 schema.xml或 managed-schema 中注册,其中一个是由 Solr 自带的 org.apache.solr.schema.TextField 定义的。这会导致冲突,从而无法创建新的 core。

简单说就是配置ik分词器时配置了两次。

  • 解决方式

如果你的 schema.xml或 managed-schema 中有自定义的 text_ik fieldType 定义,并且它与 Solr 自带的 org.apache.solr.schema.TextField 定义重复,你可以选择删除自定义的定义,或者将其重命名为不与 Solr 自带的定义冲突的名字,例如 text_ik_custom

删除多余的ik分词器配置。

  • 错误信息:

Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: [schema.xml] Duplicate field definition for 'id' [[[id{type=string,properties=indexed,stored,omitNorms,omitTermFreqAndPositions,sortMissingLast,required,useDocValuesAsStored,uninvertible, required=true}]]] and [[[id{type=string,properties=indexed,stored,omitNorms,omitTermFreqAndPositions,sortMissingLast,required,useDocValuesAsStored,uninvertible, required=true}]]] 
  • 原因分析:

这个错误表示在创建新的 Solr core 时,出现了重复的字段定义 id,在 schema.xml或 managed-schema 文件中定义了多次 id字段。这会导致冲突,从而无法创建新的 core。

  • 解决方式

删除重复字段的定义, 确保每个字段名在 schema.xml或 managed-schema 中只定义一次。

SpringBoot中依赖tika-app报错

  • 报错依赖:
<dependency><groupId>org.apache.tika</groupId><artifactId>tika-app</artifactId><version>2.8.0</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions>
</dependency>
  • 错误信息:
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/D:/software/work/dataRepository/MavenRepository_bladx/org/apache/tika/tika-app/1.7/tika-app-1.7.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory
  • 原因分析

    是由日志库的冲突导致。错误消息中显示 Logback 和 Log4jLoggerFactory 冲突了 。

在此依赖中有自己的日志 bean,而在项目中又依赖了slf4j,从而冲突。

  • 解决方式:

修改依赖为:

        <dependency><groupId>org.apache.tika</groupId><artifactId>tika-core</artifactId><version>2.8.0</version></dependency><dependency><groupId>org.apache.tika</groupId><artifactId>tika-parsers-standard-package</artifactId><version>2.8.0</version></dependency>

SpringBoot中调用solrClient.addBeans(docs);报错

  • 错误信息:
org.apache.solr.client.solrj.beans.BindingException: class: class org.springblade.customer.entity.KnowledgeIk does not define any fields.
  • 原因分析:

    是由于在使用 SolrJ 的数据绑定功能时,对应的 Java 类 org.springblade.customer.entity.KnowledgeIk 中所定义的字段,在schema.xml或 managed-schema 文件中并未定义。

Solr中的字段必须是先定义后使用。

  • 解决方式:

  • 对属性字段添加 @Field 注解 ,添加该注解后通常不需要再在 managed-schema(或旧版本中的 schema.xml)中显式定义字段。SolrJ 库会根据 @Field 注解的信息自动将 Java Bean 的属性映射为 Solr 文档中的字段,并且在 Solr 的 managed-schema 中动态地创建相应的字段定义。(前提是 Java Bean 的属性字段格式能与 managed-schema 文件中动态域中所定义的字段匹配,例如:文件中定义有*_s字段,而你定义的属性字段名为xxx_s

  • managed-schema(或旧版本中的 schema.xml)中显式定义字段。

  • 注意:

这种动态字段映射方式需要确保 Solr 的 managed-schema 文件具有相应的权限,允许 SolrJ 库进行动态的字段创建。如果你的环境限制了这种自动创建字段的权限,则需要手动定义字段在 managed-schema 中。

java属性添加了@Field 注解 但是有在Solr中并未显示

  • 原因分析

  • 未在 @Field 注解中指定属性名: 默认情况下,@Field 注解会将 Java 对象的属性名作为字段名。但是,如果你想要在 Solr 中使用不同的字段名,需要在 @Field 注解中使用 name 属性来指定字段名。

@Field(name = "custom_field_name")
private String propertyName;
  • 属性值为 null 或空: 如果属性的值为 null 或空,Solr 默认情况下不会将它们添加到文档中。确保属性的值不为空,才能被正确映射到 Solr 文档中。

  • 未添加到 Solr 的文档: 只有在将 Java 对象添加到 Solr 索引中时,@Field 注解中定义的属性才会被映射到 Solr 文档中。确保你已经执行了将 Java 对象添加到 Solr 索引的操作。

  • 忽略字段: @Field 注解中的 ignore 属性可以用来指定是否忽略某个字段。如果某个属性被设置为忽略,它将不会被添加到 Solr 文档中。

@Field(ignore = true)
private String ignoredProperty;
  • 字段类型不匹配: Solr 要求字段类型与属性的数据类型匹配。如果类型不匹配,Solr 可能会拒绝将属性添加到文档中。确保你在 @Field 注解中正确指定了字段的类型。

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

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

相关文章

pdf 转 word

pdf 转 word 一、思路 直接调用LibreOffice 命令进行文档转换的命令行工具 使用的前系统中必须已经安装了 libreofficelibreoffice已翻译的用户界面语言包: 中文 (简体)libreoffice离线帮助文档: 中文 (简体)上传字体 重点&#xff1a;重点&#xff1a;重点&#xff1a; 亲…

flutter:webview_flutter和flutter_inappwebview的简单使用

前言 最近在研究如何在应用程序中嵌入Web视图&#xff0c;发现有两个库不错。 一个是官方维护、一个是第三方维护。因为没说特别的需求&#xff0c;就使用了官方库&#xff0c;实现一些简单功能是完全ok的 webview_flutter 不建议使用&#xff0c;因为效果不怎么样&#xf…

layui第三方组件cron的使用

1. 首先上代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>cron表达式生成</title><meta name"renderer" content"webkit" /><meta http-equiv"X-UA-Compatible" con…

网站老域名跳转到新域名有哪些方法?内网穿透内网主机让外网访问

在网站服务器变更及本地主机搭建时&#xff0c;我们经常会遇到老域名地址跳转到新URL的配置&#xff0c;一些朋友还会面对无公网IP让外网访问的问题。今天我们来了解下网站老域名跳转到新域名有哪些方法&#xff0c;以及如何通过内网穿透实现内网主机让外网访问。 网站老域名跳…

js ajax 国内快速 映像

ajax 快速 映像 https://www.bootcdn.cn/ axios入门和axios基本请求方式 https://blog.csdn.net/m0_68997646/article/details/127438174 使用 jsDelivr CDN: <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>因为我们国…

关于vant2 组件van-dropdown-item,在IOS手机上,特定条件下无法点击问题的探讨

情景重现 先贴有问题的代码 <template><div :class"showBar ? homeContain : homeContain-nobar"><div class"contant" id"content"><van-dialog v-model"loading" :before-close"onBeforeClose" :…

git merge规则

参考文档&#xff1a;https://juejin.cn/post/7129333439299321887 丹尼尔&#xff1a;Hi&#xff0c;蛋兄&#xff0c;周杰伦都出新专辑了&#xff0c;你咋还不更新啊&#xff0c;真的打算半年一更啊&#xff1f; 蛋先生&#xff1a;好像确实是这样&#xff0c;要不&#xff0…

【golang】通道(channel)的基本原理(二)

我们在说"通道"一般指的都是双向通道&#xff0c;即&#xff1a;既可以发也可以收的通道。 而单向通道就是&#xff0c;只能发不能收&#xff0c;或者只能收不能发的通道。一个通道是双向还是单向的是由它的类型字面量决定的。 比如&#xff1a; var uselessChan …

不要着急购买iPhone 15,先看看这5点再做决定吧!

人们对下个月可能推出的iPhone 15感到兴奋,这是有充分理由的——有传言称,新机型正在做出一些重大改变,尤其是在iPhone 15 Pro机型方面。从四款新iPhone都采用USB-C,到iPhone 15 Pro Max采用潜望镜式长焦镜头以实现更好的变焦,听起来有很多功能值得兴奋。 当然,除非你没…

OpenCV图片校正

OpenCV图片校正 背景几种校正方法1.傅里叶变换 霍夫变换 直线 角度 旋转3.四点透视 角度 旋转4.检测矩形轮廓 角度 旋转参考 背景 遇到偏的图片想要校正成水平或者垂直的。 几种校正方法 对于倾斜的图片通过矫正可以得到水平的图片。一般有如下几种基于opencv的组合方…

探索Chevereto图床:使用Docker Compose快速搭建个人图床

家人们!图片在今天的社交媒体、博客和论坛中扮演着至关重要的角色。然而&#xff0c;随着图片数量的增加&#xff0c;寻找一个可靠的图片托管解决方案变得越来越重要。Chevereto图床是一个备受赞誉的解决方案&#xff0c;而使用Docker Compose搭建它更是一种高效、可维护的方法…

UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题

UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题 文章目录 UE4中关于利用粒子系统做轨迹描绘导致系统流畅性下降的问题前言假设及验证1. 过多的粒子发射器影响仿真系统2. 粒子数目太多&#xff0c;降低粒子发射频率&#xff0c;同时增大粒子显示范围3. 把信息输出到屏…

290. 单词规律

单词规律 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern “abba”, s “do…

Redis —— 集群迁移和划分

文章目录 Redis —— 集群迁移和划分简介迁移步骤总结步骤 Redis —— 集群迁移和划分 简介 需求背景&#xff1a;目前使用的Redis集群只有一个&#xff0c;由于业务激增&#xff0c;使用一套集群的方式并不适用当前场景&#xff0c;所以要将现集群按照业务形态以及业务需求进…

matlab 点云最小二乘拟合空间直线(方法一)

目录 一、算法原理1、空间直线2、最小二乘法拟合二、代码实现三、结果展示四、可视化参考本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、空间直线 x

基于 Vercel TiDB Serverless 的 chatbot

作者&#xff1a; shiyuhang0 原文来源&#xff1a; https://tidb.net/blog/7b5fcdc9 # 前言 TiDB Serverless 去年就有和 Vercel 的集成了&#xff0c;同时还有一个 bookstore template 方便大家体验。但个人感觉 bookstore 不够炫酷&#xff0c;借 2023 TiDB hackthon 的…

07_缓存预热缓存雪崩缓存击穿缓存穿透

缓存预热&缓存雪崩&缓存击穿&缓存穿透 一、缓存预热 提前将数据从数据库同步到redis。 在程序启动的时候&#xff0c;直接将数据刷新到redis懒加载&#xff0c;用户访问的时候&#xff0c;第一次查询数据库&#xff0c;然后将数据写入redis 二、缓存雪崩 发生情…

【排排站:探索数据结构中的队列奇象】

本章重点 队列的概念及结构 队列的实现方式 链表方式实现栈接口 队列面试题 一、队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#x…

“RFID与光伏板的完美融合:探索能源科技的新时代!“

随着科技的不断发展&#xff0c;人类创造出了许多令人惊叹的发明。其中&#xff0c;RFID&#xff08;Radio Frequency Identification&#xff09;技术的应用在各个领域日益广泛。最近的研究表明&#xff0c;将RFID技术应用于光伏板领域&#xff0c;不仅可以提高光伏板的效率&a…

JVM中分代回收机制

为什么要分为新生代和老年代&#xff1f; 分为新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;是为了更有效地管理和优化内存的使用。 新生代主要存放生命周期较短的对象&#xff0c;例如方法的局部变量、临时变量等。由于这…