2016-09-29 54 views
1

(使用Solr的4.10.3)SOLR場備用行爲

我有三個日期的Solr模式:

  1. requiredDate(必填字段)
  2. optionalDate(非必需)
  3. resolvedDate(由#1或#2填充)

    因爲我需要使用ResolvedDate進行排序,所以它是multiValued =「false」。我正在嘗試使用行爲來填充resolvedDate; 「如果可用,請使用可選字段值,否則回退到所需的字段值」。我有嘗試:

 

<copyField source="requiredDate" dest="resolvedDate" /> 
<copyField source="optionalDate" dest="resolvedDate" /> 

做出了應有的努力多個值複製到一個值場失敗。

我可以在模式或UpdateRequestHandler定義中實現具有此回退行爲的字段嗎?怎麼樣?

回答

2

您可以使用StatelessScriptUpdateProcessor(參見Update Request Processors),它允許在更新請求期間使用腳本處理文檔。爲每個腳本定義了幾個全局變量,以便您可以輕鬆地執行所需的操作。

您必須定義一個UpdateRequestProcessorChain,您可以在其中放置腳本處理器定義,並在更新requestHandler(solrconfig.xml)中聲明處理器鏈的用法。

+0

謝謝,StatelessScriptUpdateProcessorFactory的配置示例,requestHandler update.chain和update-script.js使它比預期的更容易 – GoetzOnline