1. 重复数据删除
solr通过<Signature>类的类型来支持重复数据删除技术的.一个Signature可以通过以下几种方式实现:
方法 | 描述 |
MD5Signature | 128位hash用于副本探测解析. |
Lookup3Signature | 64位hash用于副本探测解析.比MD5更快,索引更小. |
TextProfileSignature | 从Nutch中的模糊散列实现的近重复检测.它是可以调节的,对于长文本字段处理具有较好的效果. |
注意:
添加副本处理将改变allowDups的设置,所以它用于update条目(这里使用signatureField)而不是更新唯一字段的条目.当然signatureField可以是唯一字段.
在一个文档添加时,将自动产生一个信息,使用指定的signatureField连接这个文档.
1.1 Configuration Options
SignatureUpdateProcessorFactory在solrconfig.xml中注册,作为UpdateRequestProcessorChain:
<updateRequestProcessorChain name="dedupe">
<processor class="solr.processor.SignatureUpdateProcessorFactory">
<bool name="enabled">true</bool>
<str name="signatureField">id</str>
<bool name="overwriteDupes">false</bool>
<str name="fields">name,features,cat</str>
<str name="signatureClass">solr.processor.Lookup3Signature</str>
</processor>
</updateRequestProcessorChain>
设置 | 默认 | 描述 |
signatureClass | org.apache.solr.update.processor.Lookup3Signature | 生成一个Signature哈稀散列的Signature实现 |
fields | 所有字段 | The fields to use to generate the signature hash in a comma separated list. By default, all fields on the document will be used. |
signatureField | signatureField | 字段名称,用来保持指纹/签名.确保这个字段在schema.xml中定义. |
enabled | true | enable/disable 副本工厂处理. |
1.2 In schema.xml
如果使用指定的字段存储签名,必须使这个字段索引.
<field name="signature" type="string" stored="true" indexed="true" multiValued="false" />
确保使用定义的chain更新句柄:
<requestHandler name="/update">
<lst name="defaults">
<str name="update.chain">dedupe</str>
</lst>
</requestHandler>
注意:
这个更新处理同样也可以通过请求参数中设置update.chain=dedupe.