2016-05-03 110 views
0

我嘗試了下面問題中列出的解決方案。如何從SOLR中的多值字段中刪除重複項?

Removing Solr duplicate values into multivalued field

我使用dataimport處理程序和創建使用RegexTransformer領域多個值。

我的SQL返回此列FOO

約翰尼·卡什,邦妮錢,蜂蜜兔,約翰尼·卡什

,我用它存儲到多值字段富splitBy = 「」

<field column="FOO" name="foo" splitBy=","/>  

和它存儲在多值字段這樣

{ 「約翰尼」, 「邦妮錢」, 「親愛的兔子」, 「約翰尼」}

我已將此添加到solrconfig XML

<updateRequestProcessorChain name="distinctMultiValued" default="true"> 
    <!-- To remove duplicate values in a multivalued field--> 
    <processor class="DistributedUpdateProcessorFactory"/> 
    <processor class="UniqFieldsUpdateProcessorFactory"> 
     <str name="fieldRegex">foo</str> 
    </processor> 
    <processor class="solr.LogUpdateProcessorFactory" />   
    <processor class="solr.RunUpdateProcessorFactory" /> 
    </updateRequestProcessorChain> 

我也嘗試fieldName而不是fieldRegex,並嘗試* oo而不是foo,但重複的部分保持不變。

這是否與RegexTransformer有關?

我也有一個更新鏈TrimFieldsUpdateProcessorFactory比運行沒有任何問題。

回答

0

我能夠通過移動UniqFieldsUpdateProcessorFactory現有<updateRequestProcessorChain>塊我必須解決這個問題。

<updateRequestProcessorChain name="skip-empty" default="true"> 
    <!-- Next two processors affect all fields - default configuration --> 
    <processor class="TrimFieldUpdateProcessorFactory" /> 
    <processor class="RemoveBlankFieldUpdateProcessorFactory" /> 
    <processor class="UniqFieldsUpdateProcessorFactory"> 
     <str name="fieldRegex">.*oo</str> 
    </processor> 
    <processor class="solr.LogUpdateProcessorFactory" /> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
    </updateRequestProcessorChain> 

SOLR文檔UpdateRequestProcessorChain

至多一個處理器鏈可被配置爲 「默認」。如果沒有配置 處理器作爲默認處理器,則默認使用 LogUpdateProcessorFactory和RunUpdateProcessorFactory爲 創建。提供默認的處理器鏈可能是影響 從某些來源索引的文檔(例如數據入口處理程序)的唯一方式。

0

可能是你需要提及的過程類全類名和<lst name="fields"> <str>multivaluedfield</str></lst>.

<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory"> <lst name="fields"> <str>multivaluedFieldXYZ</str> </lst> </processor>

+0

這是行不通的。字段選項自SOLR 5起棄用。 – Razen

+0

在模式文件中,將此過濾器添加到您的多字段字段類型定義中。' – vinod

+0

它不是隻刪除重複的標記。它不會從查詢結果中的字段中刪除重複值,是嗎? – Razen

相關問題