如何在Vespa中以编程方式添加/删除搜索器中的数组/映射中的元素?

时间:2019-01-10 12:36:16

标签: vespa

我想在数组中添加元素,或在Vespa的自定义搜索结果中从地图中删除一些键。

例如:在搜寻者点击中,我有以下字段:

fields:
    n: 0,
    myArray: [0, 1, 2]
    myMap: {"key1":"value1", "key2":"value2"}

我想在数组中附加值(3,4)并从地图中删除键(key2),以返回结果:

fields:
    n: 0,
    myArray: [0, 1, 2, 3, 4]
    myMap: {"key1":"value1"}

我已跟随参考链接Inspecting Structured Data,但无法从已创建的检查器对象中添加或删除条目。我不想为我的数组/结构创建一个新的SlimeAdapter对象。因为这将需要完全遍历数组并将单个条目添加到我的新对象中,这是我想要避免的。

请提出相同的解决方法。

1 个答案:

答案 0 :(得分:1)

从匹配中返回的所有字段值均为只读。造成这种情况的原因有很多,但最重要的是性能。

如果要在搜索器中编辑字段的结构化数据,则需要完全遍历该字段,或者创建一个包装器来跟踪您的编辑并生成一个视图,该视图包含应用了更改的只读数据

您提到您不想做第一个选择。如果出于观察到的性能原因,则可以考虑第二种选择。

如果您通常这样做,请考虑将其退还。