[英]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.