如何在 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"}

已点击参考链接检查结构化数据,但无法在我创建的检查器对象中添加或删除条目。我不想为我的数组/结构创建新的史莱姆适配器对象。因为这需要完全遍历数组并将单个条目添加到我的新对象中,我想避免这种情况。

请提出一种方法。

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

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

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

如果你通常这样做,请考虑将其贡献回来。

最新更新