在 Vespa 中创建动态的父子关系

Creating dynamic Parent Child relationship in Vespa

我有一个文档(文档类型 A),它有多个(任意数量的)相同类型(文档类型 B)的子文档。以下来自 vespa 文档的 link 讨论了父子关系。

http://docs.vespa.ai/documentation/search-definitions.html#document-references

为此,我们必须定义一个引用类型字段,然后从引用的文档中导入任何字段。如果我想从父文档中引用多个文档怎么办?我不能定义类似

的东西吗
field child_ref type array<reference<doc_type_child>> {
      indexing: attribute
}

当然,我很难导入某个字段,因为所有子引用都具有相同的字段。

假设子文档类型是 model,父文档类型是 car,基本上,我想要一个嵌套文档我还需要基于父字段和子字段进行查询的能力。假设我搜索 车轮辐条在范围 (3,5) 内的梅赛德斯汽车,在父文档中搜索梅赛德斯品牌(父文档字段),然后我想选择梅赛德斯汽车结果模型 (car1, car2, ...) 具有从 3 到 5 的轮辐(子文档字段), (car1[model 1, model 4, model 6], car2[model 2, model 3, model 5]).基本上,命中应该是梅赛德斯品牌,在所有这些命中中,具有 3-5 个轮辐的车型的内部命中。

该关系从子文档到父文档,因此您不能在父文档中存储子文档引用。

但是您提供的示例完全可行,汽车是父(全局)文档类型并为子文档建模,每个子文档引用父文档(汽车)并且可以从父文档类型导入任何字段,而 matching/searching 针对子(模型)文档类型执行,您可以搜索模型文档字段和导入的父汽车字段。 /search/?query=car_brand:mercedes+AND+model_spokes:[3;5]&restrict=model

其中 car_brand 是从模型文档类型中的父汽车导入的字段。