去重
如果您的索引中存在重复或近似重复的文档,则可能值得实施去重。
可以使用低冲突或模糊哈希算法,有效地防止重复或近似重复的文档进入索引,或者使用签名/指纹标记文档以进行重复字段折叠。Solr 通过 Signature
类原生支持这种类型的去重技术,并允许轻松添加新的哈希/签名实现。可以通过以下几种方式实现签名
-
MD5Signature:用于精确重复检测的 128 位哈希。
-
Lookup3Signature:用于精确重复检测的 64 位哈希。它比 MD5 快得多,而且索引更小。
-
TextProfileSignature:来自 Apache Nutch 的模糊哈希实现,用于近似重复检测。它是可调的,但最适合较长的文本。
以后可以添加其他更复杂的模糊/近似哈希算法。
添加去重过程将更改 当然, |
配置选项
可以在 Solr 中的两个位置配置去重:在 solrconfig.xml
中和在模式中。
在 solrconfig.xml 中
必须在 solrconfig.xml
中注册 SignatureUpdateProcessorFactory
,作为更新请求处理器链的一部分,如下例所示
<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
用于生成签名哈希的 Signature 实现。
必须指定实现的完整类路径。上述介绍了可用的选项,要使用的关联类路径为
-
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 中使用
(使用任何其他 |