0


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")privateString propertyName;
  • 属性值为 null 或空: 如果属性的值为 null 或空,Solr 默认情况下不会将它们添加到文档中。确保属性的值不为空,才能被正确映射到 Solr 文档中。
  • 未添加到 Solr 的文档: 只有在将 Java 对象添加到 Solr 索引中时,@Field 注解中定义的属性才会被映射到 Solr 文档中。确保你已经执行了将 Java 对象添加到 Solr 索引的操作。
  • 忽略字段:@Field 注解中的 ignore 属性可以用来指定是否忽略某个字段。如果某个属性被设置为忽略,它将不会被添加到 Solr 文档中。
@Field(ignore =true)privateString ignoredProperty;
  • 字段类型不匹配: Solr 要求字段类型与属性的数据类型匹配。如果类型不匹配,Solr 可能会拒绝将属性添加到文档中。确保你在 @Field 注解中正确指定了字段的类型。
标签: spring boot solr 后端

本文转载自: https://blog.csdn.net/weixin_44603464/article/details/134337560
版权归原作者 卷不动的打工仔 所有, 如有侵权,请联系我们删除。

“SpringBoot集成Solr所遇问题记录”的评论:

还没有评论