W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
如果索引中存在重復(fù)或接近重復(fù)的文檔,則可能需要執(zhí)行重復(fù)數(shù)據(jù)刪除。
防止重復(fù)或接近重復(fù)的文檔進(jìn)入索引或用簽名/指紋標(biāo)記具有重復(fù)字段折疊的文檔可以用低沖突或模糊哈希算法有效地實(shí)現(xiàn)。Solr 通過(guò) Signature 類(lèi)本地支持這種類(lèi)型的重復(fù)數(shù)據(jù)刪除技術(shù),并允許輕松添加新的哈希/簽名實(shí)現(xiàn)。簽名可以通過(guò)幾種方式實(shí)現(xiàn):
其他更復(fù)雜的模糊/近似哈希算法可以稍后添加。
注意:在重復(fù)數(shù)據(jù)刪除過(guò)程中添加將更改 allowDups 設(shè)置,使其適用于更新術(shù)語(yǔ) (在本例中為 signatureField),而不是唯一的字段術(shù)語(yǔ)。當(dāng)然,signatureField 可以是唯一的字段,但通常您希望唯一字段是獨(dú)一無(wú)二的。添加文檔時(shí),將自動(dòng)生成簽名并將其附加到指定 signatureField 中的文檔。
Solr 中有兩個(gè)地方可以配置重復(fù)數(shù)據(jù)刪除:in solrconfig.xml 和 in schema.xml。
SignatureUpdateProcessorFactory 必須被登記在 solrconfig.xml 中作為更新請(qǐng)求處理器鏈的一部分,如在這個(gè)例子中:
<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>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
這 SignatureUpdateProcessorFactory 需要以下幾個(gè)屬性:
用于生成簽名哈希的簽名實(shí)現(xiàn)。默認(rèn)是org.apache.solr.update.processor.Lookup3Signature
。
必須指定實(shí)現(xiàn)的完整類(lèi)路徑。上面介紹了可用的選項(xiàng),要使用的關(guān)聯(lián)類(lèi)路徑是:
org.apache.solr.update.processor.Lookup3Signature
org.apache.solr.update.processor.MD5Signature
org.apache.solr.update.process.TextProfileSignature
用于在逗號(hào)分隔列表中生成簽名哈希的字段。默認(rèn)情況下,將使用文檔上的所有字段。
用于保存指紋/簽名的字段的名稱(chēng)。該字段應(yīng)該被定義schema.xml
。默認(rèn)是signatureField
。
設(shè)置為 false 可禁用重復(fù)數(shù)據(jù)刪除處理。默認(rèn)值是 true。
如果為 true,則默認(rèn)情況下,當(dāng)文檔已經(jīng)與此簽名匹配時(shí),它將被覆蓋。
如果您使用單獨(dú)的字段來(lái)存儲(chǔ)簽名,則必須將其編入索引:
<field name="signatureField" type="string" stored="true" indexed="true" multiValued="false" />
請(qǐng)確保更改您的更新處理程序以使用定義的鏈,如下所示:
<requestHandler name="/update" class="solr.UpdateRequestHandler" >
<lst name="defaults">
<str name="update.chain">dedupe</str>
</lst>
...
</requestHandler>
上述例子假設(shè)你已經(jīng)定義了請(qǐng)求處理程序的其他部分。
還可以使用參數(shù) update.chain=dedupe 為每個(gè)請(qǐng)求指定更新處理器。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: