去重
如果重复或近似重复的文档是您索引中关注的问题,则值得实施重复数据删除。
使用低冲突或模糊哈希算法,可以有效地防止重复或近似重复的文档进入索引或使用签名/指纹标记文档以进行重复字段折叠。Solr 本机通过 Signature
类支持此类重复数据删除技术,并允许轻松添加新的哈希/签名实现。签名可以通过以下几种方式实现
-
MD5Signature:用于精确重复检测的 128 位哈希。
-
Lookup3Signature:用于精确重复检测的 64 位哈希。这比 MD5 快得多,并且索引更小。
-
TextProfileSignature:Apache Nutch 中用于近似重复检测的模糊哈希实现。它可调,但在较长的文本上效果最佳。
稍后可以添加用于模糊/近似哈希的其他更复杂的算法。
添加重复数据删除过程将更改 当然, |
配置选项
在 Solr 中有两个位置可以配置重复数据删除:solrconfig.xml
和 架构。
在 solrconfig.xml 中
SignatureUpdateProcessorFactory
必须在 solrconfig.xml
中注册为 更新请求处理器链 的一部分,如下例所示
<updateRequestProcessorChain default="true">
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.processor.SignatureUpdateProcessorFactory">
<str name="signatureField">id</str>
<str name="fields">name,features,cat</str>
<str name="signatureClass">solr.processor.Lookup3Signature</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
SignatureUpdateProcessorFactory
采用多个属性
signatureClass
-
可选
默认值:
org.apache.solr.update.processor.Lookup3Signature
用于生成签名哈希的签名实现。
必须指定实现的完整类路径。可用选项如上所述,要使用的关联类路径为
-
org.apache.solr.update.processor.Lookup3Signature
-
org.apache.solr.update.processor.MD5Signature
-
org.apache.solr.update.process.TextProfileSignature
-
fields
-
可选
默认值:所有字段
用于生成签名哈希的字段,以逗号分隔的列表形式列出。默认情况下,将使用文档上的所有字段。
signatureField
-
可选
默认值:
signatureField
用于保存指纹/签名的字段的名称。该字段应在架构中定义。
enabled
-
可选
默认值:
true
设置为
false
以禁用重复数据删除处理。 overwriteDupes
-
可选
默认值:
true
如果
true
,当存在与该签名匹配的文档时,它将被覆盖。如果您使用overwriteDupes=true
,则signatureField
在架构中必须为indexed="true"
。
在 SolrCloud 中使用
SignatureUpdateProcessorFactory 在 SolrCloud 中使用
(在 |