solr同步数据库出现【巨大字符长度】

错误信息:

今天发现一个问题,数据库字段类型为clob,存储没问题。但是solr同步数据库时出现同步的数据与overview中的num docs的数据量不一致,经过排查,单条增加到solr找到问题。

出现巨大字符串,UTF-8编码长度超过最大限制(默认通常是32766个字符)。

解决方案:

1. 修改字段类型定义

你可以在Solr的schema文件中修改或创建新的字段类型,增加maxLength的值,或者直接移除这个限制。例如,如果你想将最大长度增加到50000,可以这样做:

<fieldType name="text_long" class="solr.TextField" positionIncrementGap="100">

  <analyzer type="index">

    <tokenizer class="solr.StandardTokenizerFactory"/>

    <filter class="solr.LowerCaseFilterFactory"/>

  </analyzer>

  <analyzer type="query">

    <tokenizer class="solr.StandardTokenizerFactory"/>

    <filter class="solr.LowerCaseFilterFactory"/>

  </analyzer>

  <!-- 增加 maxLength 属性 -->

  <property name="maxLength" value="50000"/>

</fieldType>

然后,你可以将该字段类型应用到你的字段定义中:

<field name="arcgiveOcrText" type="text_long" indexed="true" stored="true"/>

2. 移除最大长度限制

如果你不需要限制字段长度,也可以选择完全移除maxLength的限制。这通常不推荐,因为它可能导致内存溢出等问题,特别是在处理非常大的文档时。但是,如果你确信你的应用场景不会遇到性能问题,可以这样做:
 

<fieldType name="text_unlimited" class="solr.TextField" positionIncrementGap="100">

  <analyzer type="index">

    <tokenizer class="solr.StandardTokenizerFactory"/>

    <filter class="solr.LowerCaseFilterFactory"/>

  </analyzer>

  <analyzer type="query">

    <tokenizer class="solr.StandardTokenizerFactory"/>

    <filter class="solr.LowerCaseFilterFactory"/>

  </analyzer>

  <!-- 移除 maxLength 属性 -->

</fieldType>

实施步骤:

修改或添加fieldType定义到你的managed-schema文件(或相应的schema文件)。

重启Solr服务以使更改生效。

重新索引你的数据。

通过上述任一方法,你应该能够解决因字段长度超出限制而导致的索引问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值