簡體   English   中英

在Solr上,我如何僅將所選值從多值字段復制到另一個多值字段?

[英]On solr how can i copy selected values only from multi valued field to another multi valued field?

我已索引Solr該字段之一是多值的,它具有不同的值,我想將選擇的值復制到新字段中。

Field1的值分別為a,b和c,並且想要復制到Field2中,但僅值為a和c

數據是使用dataimportprocessor =“ SolrEntityProcessor”來自另一個Solr實例的

我正在使用solr 4.9

StatelessScriptUpdateProcessorFactory ,用於在更新請求期間使用作為腳本實現的更新處理器。
當我們索引,我們得到的多值字段1,然后復制它,我們需要進入另一個領域字段2的值。
[托管模式]

<field name="Field1" type="custom" multiValued="true" indexed="true" stored="true"/>
  <field name="Field2" type="custom" multiValued="true" indexed="true" stored="true"/>

以下是示例update-script.js

function processAdd(cmd) {
    doc = cmd.solrDoc;
    id = doc.getFieldValue("id");
    Field1 = doc.getFieldValues("Field1");
    logger.info("Size : "+Field1.size());
    for(i = 0; i < Field1.size();i++){
        if(Field1.get(i).equals("a") || Field1.get(i).equals("c")){
            doc.addField("Field2", Field1.get(i));
        }
    }
    logger.info("UpdateScript processed: "+id);

}
function processDelete(cmd) {
  // no-op
}

function processMergeIndexes(cmd) {
  // no-op
}

function processCommit(cmd) {
  // no-op
}

function processRollback(cmd) {
  // no-op
}

function finish() {
  // no-op
}

將StatelessScriptUpdateProcessorFactory處理器添加到solrconfig.xml中的updateRequestProcessorChain。

<processor class="solr.StatelessScriptUpdateProcessorFactory">
   <str name="script">update-script.js</str>
 </processor>

我想要什么意思? 索爾看不懂你的想法。 那么,您是否要跳過特定值,位於特定位置的項目,與特定規則不匹配的任何項目?

在所有情況下,很可能都將使用UpdateRequestProcessor,但是哪種具體情況取決於您的業務規則的實際含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM