gpt4 book ai didi

solr - Solr DIH 可以进行原子更新吗?`

转载 作者:行者123 更新时间:2023-12-04 14:01:04 26 4
gpt4 key购买 nike

Solr 4 能够对索引中的现有文档进行原子(部分)更新。 IE。可以匹配文档 ID 并仅替换一个字段的内容,或向多值字段添加更多条目:http://wiki.apache.org/solr/Atomic_Updates

可以从 DataImportHandler (DIH) 完成原子更新吗?

最佳答案

我通过反复试验发现 ScriptTransformer 的答案是"is"。

Solr 文档展示了如何使用“set”、“add”或“inc”向字段节点添加更新属性。如果我创建一个具有必要更新属性的测试 XML 文件,它在传递给常规更新处理程序时工作正常。但是,当传递给 DIH 时——即使没有任何转换——更新属性会被完全忽略。

这是我用来重新引入更新属性并使原子更新工作的脚本转换器的简化版本。请注意 Java HashMap 的使用。

var atomicTransformer = function (row) {
var authorMap = new java.util.HashMap();
var author = String(row.get('author'));
authorMap.put('add', author);
row.put('author', authorMap);
};

这将在 DIH Debug模式下生成以下 JSON:
{
"id": [
123
],
"author": [
{
"add": "Smith, J"
}
]
}

多值字段也没有问题:将 ArrayList 而不是字符串传递给 HashMap。
var atomicTransformer = function (row) {
var fruits = new java.util.ArrayList();
fruits.add("banana");
fruits.add("apple");
fruits.add("pear");
var fruitMap = new java.util.HashMap();
fruitMap.put('add', fruits);
row.put('fruit', fruitMap);
}

关于solr - Solr DIH 可以进行原子更新吗?`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21006045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com