首页 > 解决方案 > 如何在 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,但无法从我创建的 Inspector 对象中添加或删除条目。我不想为我的数组/结构创建一个新的 SlimeAdapter 对象。因为这需要完全遍历数组并将单个条目添加到我想要避免的新对象中。

请提出相同的方法。

标签: vespa

解决方案


从命中返回的所有字段值都是只读的。这有几个原因,但最重要的一个是性能。

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

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

如果您通常这样做,请考虑将其回馈。


推荐阅读