vespa - 如何在 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 对象。因为这需要完全遍历数组并将单个条目添加到我想要避免的新对象中。
请提出相同的方法。
解决方案
从命中返回的所有字段值都是只读的。这有几个原因,但最重要的一个是性能。
如果您想在搜索器中编辑字段的结构化数据,您需要完全遍历它,或者创建一个包装器来跟踪您的编辑并生成一个视图,该视图由应用了您的更改的只读数据组成。
你提到你不想做第一个选择。如果这是出于观察到的性能原因,您可以考虑第二种选择。
如果您通常这样做,请考虑将其回馈。
推荐阅读
- spring-data-jpa - Spring数据JPA OneToOne级联
- android - 当你更新你的应用程序时,服务会发生什么?
- python - 如何从 Pandas 系列中获取真/假面具?
- sql - 在 SQL Server 中使用 STRING_AGG 获取唯一值
- sql - 获取查询结果的相反 Access 2016
- curl - SERP的卷曲编码
- java - 正则表达式准确地找到给定的字符串
- javascript - JS在for循环内创建动态变量
- kendo-ui - InvalidStateError - Kendo UI 上传
- express - TypeError:无法在“WebAssembly”上执行“编译”:响应 MIME 类型不正确。预期的“应用程序/wasm”