当前位置: 首页 > 知识库问答 >
问题:

Solr DIH可以执行原子更新吗?`

公良天逸
2023-03-14

Solr4提供了对索引中现有文档进行原子(部分)更新的功能。即。可以匹配文档ID并替换一个字段的内容,或者向多值字段添加更多条目:http://wiki.apache.org/solr/atomicupdates

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

共有1个答案

巫马泓
2023-03-14

答案是“是的”ScriptTransformer,我通过反复试验发现。

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

这里是我用来重新引入update属性并使原子更新工作的脚本transformer的简化版本。请注意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);
};
{
    "id": [
        123
    ],
    "author": [
        {
            "add": "Smith, J"
        }
    ]
}
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);
}
 类似资料:
  • 问题内容: 我对React JS非常陌生(例如,从今天开始)。我不太了解setState的工作方式。我将React和Easel JS结合起来,根据用户输入绘制网格。这是我的JS bin:http://jsbin.com/zatula/edit? js,输出 这是代码: 当您使用下拉菜单之一更改行数或列数时,您会在JS bin中看到,第一次不会发生任何事情。下次更改下拉值时,网格将绘制到先前状态的行

  • 假设以下两种计数器实现: 乍一看,原子应该更快、更具可扩展性。我相信他们是的。但是它们始终比同步块快吗?或者当该规则被打破时,存在某些情况(例如SMP/单CPU机器、不同的CPU ISA、操作系统等)?

  • 问题内容: 继承还是不继承? 关于Pandas子类化问题的最新消息是什么?(其他大多数线程都使用3-4年)。 我希望做类似… 问题答案: 这就是我的方法。我遵循了发现的建议: 子类化熊猫数据结构 修复完成问题 以下示例仅显示了构造的新子类的用法。如果您按照我的第一个链接中的建议进行操作,则也可以考虑使用子类化,以考虑获取子类的一维切片。 示范 陷阱 这种方法很烂 last) in () ---->

  • 我对ReactJS非常陌生(比如,今天才刚开始)。我不太明白是如何工作的。我正在结合React和Easel JS来绘制基于用户输入的网格。以下是我的JS bin:http://jsbin.com/zatula/edit?JS,output 代码如下: 您可以在JSbin中看到,当您用下拉框之一更改行或列的数量时,第一次不会发生任何事情。下次更改下拉值时,网格将绘制到上一个状态的行和列值。我猜这是因

  • 我可以直接对原子变量执行算术运算吗? 因为我发现C标准库提供了很多实用函数,比如来执行原子变量和非原子变量之间的加法。但是,我很好奇,因为变量是原子的,我能直接对它进行算术运算吗?如以下代码所示:

  • 我知道下一个场景:(奇怪的格式,我知道) 如果线程#1和线程#2在完全相同的时间输入,这将发生: > 两者都将执行" CMPXCHG指令同时对两个线程生效: 3.1锁定前缀本机使用 3.2线程#1或#2首先到达,赢得比赛。 3.3获胜线程比较(是aBoolean==true?)这将返回"true",因此一个布尔值将被设置为"false"。 3.4 aBoolean现在为false。 3.5线程丢失