You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Nutch与Solr中实现URL去重:统一URL大小写的问题

解决Solr索引中URL大小写导致的重复问题

因为你将URL作为id字段,但无法修改传入URL的大小写,可通过以下Solr内置机制统一处理,避免大小写不同的URL重复索引:

方案1:修改id字段的类型为带小写过滤的文本类型

在managed-schema(或旧版schema.xml)中定义一个支持自动小写转换的字段类型,将id字段关联到该类型:

<!-- 定义带小写过滤的字段类型 -->
<fieldType name="string_lower" class="solr.TextField">
  <analyzer>
    <!-- 保持整个URL为单个token -->
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <!-- 强制转为小写 -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

<!-- 将id字段的类型改为上述自定义类型 -->
<field name="id" type="string_lower" indexed="true" stored="true" required="true"/>

这样无论传入的URL是https://www.example.com/xxx还是https://www.example.com/XXX,索引时都会被统一转为小写存储,确保id唯一。

方案2:使用更新请求处理器(URP)自动转换id为小写

在solrconfig.xml中配置更新请求处理器链,在文档进入索引前自动修改id字段的大小写:

<!-- 定义处理链 -->
<updateRequestProcessorChain name="lowercase-id">
  <processor class="solr.FieldMutatingUpdateProcessorFactory">
    <str name="fieldName">id</str>
    <str name="mutator">lowercase</str>
  </processor>
  <!-- 保留默认的日志和更新处理器 -->
  <processor class="solr.LogUpdateProcessorFactory"/>
  <processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>

<!-- 绑定到更新请求处理器 -->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
  <lst name="defaults">
    <str name="update.chain">lowercase-id</str>
  </lst>
</requestHandler>

后续所有通过/update接口提交的文档,id字段都会被自动转为小写后再索引。

方案3:数据导入时(DIH)转换URL大小写

如果使用DataImportHandler导入数据,可在data-config.xml中通过脚本转换器处理:

<!-- 定义脚本 -->
<script><![CDATA[
  function toLowerCase(row) {
    var url = row.get('id');
    if (url) {
      row.put('id', url.toLowerCase());
    }
    return row;
  }
]]></script>

<!-- 在实体中应用转换器 -->
<entity name="your_entity" query="SELECT url AS id FROM your_table">
  <field column="id" name="id" transformer="script:toLowerCase"/>
</entity>

导入过程中会自动将URL转为小写作为id字段值。

内容的提问来源于stack exchange,提问作者wrc3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:33:10