SpringBoot集成Solr所遇问题

这篇具有很好参考价值的文章主要介绍了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 文档中。文章来源地址https://www.toymoban.com/news/detail-652924.html

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

到了这里,关于SpringBoot集成Solr所遇问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Solr】体验极速安装solr

    solr是基于java开发的,所以solr需要用到jdk环境,并且solr需要在tomcat容器中才能运行,所以需要提前配置好jdk和tomcat环境。 需要注意的是: src.tgz:带src表示是带源码文件的压缩包,无src是已经编译过的压缩包 .tgz:Linux相关操作系统使用的压缩包 .zip:Windows操作系统使用的压缩包

    2024年02月11日
    浏览(27)
  • 【Solr】中间件-solr快速使用

    pom中添加依赖: 提供一个demo:

    2024年02月11日
    浏览(31)
  • 38、Solr Integration(2)Install Solr

    进入Solr下载页面Solr Downloads - Apache Solr 下载需要的版本,这里下载最新版9.2.1,下载完成解压zip包得到9.2.1版本的Solr目录 进入bin目录,并打开CMD 输入启动命令,端口默认为8983 在浏览器打开Solr管理界面,可以看到Solr的信息,刚启动的Solr服务里没有core需要创建一个Core 点击左

    2024年02月05日
    浏览(26)
  • 【搜索引擎Solr】Apache Solr 神经搜索

    Sease[1] 与 Alessandro Benedetti(Apache Lucene/Solr PMC 成员和提交者)和 Elia Porciani(Sease 研发软件工程师)共同为开源社区贡献了 Apache Solr 中神经搜索的第一个里程碑。 它依赖于 Apache Lucene 实现 [2] 进行 K-最近邻搜索。 特别感谢 Christine Poerschke、Cassandra Targett、Michael Gibney 和所有其他

    2024年02月15日
    浏览(32)
  • 【搜索引擎Solr】Solr:提高批量索引的性能

    几个月前,我致力于提高“完整”索引器的性能。我觉得这种改进足以分享这个故事。完整索引器是 Box 从头开始创建搜索索引的过程,从 hbase 表中读取我们所有的文档并将文档插入到 Solr 索引中。 我们根据 id 对索引文档进行分片,同样的文档 id 也被用作 hbase 表中的 key。

    2024年02月15日
    浏览(35)
  • 【搜索引擎Solr】配置 Solr 以获得最佳性能

    Apache Solr 是广泛使用的搜索引擎。有几个著名的平台使用 Solr;Netflix 和 Instagram 是其中的一些名称。我们在 tajawal 的应用程序中一直使用 Solr 和 ElasticSearch。在这篇文章中,我将为您提供一些关于如何编写优化的 Schema 文件的技巧。我们不会讨论 Solr 的基础知识,我希望您了解

    2024年02月16日
    浏览(29)
  • Solr框架 02.Solr操作(document操作和query查询)

    菜单项目Documents使用办法,document操作是对数据库的。 其中的document选项: 以XML格式举例 1新增/修改 当id不存在时新增,当id存在修改。 2删除 2.1根据主键删除 2.2根据条件删除 菜单项目query查询使用办法 1查询全部 只要在q参数中写入*:*既是搜索全部数据。 2条件查询 在q参数

    2024年02月12日
    浏览(33)
  • Solr框架 01 Solr框架简介,安装,配置(Analysis,Dataimport)

    Solr简介: Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。 Solr本质就是一个Java web 项

    2024年02月11日
    浏览(28)
  • solr快速上手:搭建solr集群并创建核心,设置数据同步(十一)

    前几章我们已经讲解了solr单机版的基本使用,但实际生产中,为了保证高可用、高性能,我们一般会采用集群模式,所以接下来,我们继续讲解solr集群的搭建和基本操作 在讲解solr集群模式前,我们要先了解“分片”的概念。 当节点由一个拓展为多个时,数据存储和同步问

    2024年02月13日
    浏览(55)
  • spring boot集成Elasticsearch-SpringBoot(25)

      搜索引擎(search engine )通常意义上是指:根据特定策略,运用特定的爬虫程序从互联网上搜集信息,然后对信息进行处理后,为用户提供检索服务,将检索到的相关信息展示给用户的系统。   而我们讲解的是捜索的索引和检索,不涉及爬虫程序的内容爬取。大部分公司

    2023年04月09日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包