gpt4 book ai didi

vespa - 在结构中搜索非原始类型

转载 作者:行者123 更新时间:2023-12-03 23:03:05 28 4
gpt4 key购买 nike

我需要在嵌套在另一个数组中的数组中进行搜索。假设我有以下文件

schema foos {

document foos {

struct foo {
field bars type array<string> {}
}

field baz type string {
indexing: summary
}

field foos type array<foo> {
indexing: summary
struct-field bars { indexing: attribute } // breaks due to non-primitive typing
}
}
}
我需要能够在 bar 字段中进行搜索,或者至少可以在 rank-profile 中访问该字段,同时还能够基于 baz 进行搜索。我对解决方案的第一个想法是将其结构如下:
schema foos {

document foos {

field id type string {
indexing: summary
}

field baz type string {
indexing: summary | attribute
}

field foos type array<reference<foo>> {
indexing: summary
}
}
}
schema foo {
document foo {

field foos_ref type reference<foos> {
indexing: attribute
}

field bars type array<string> {
indexing: summary | index
}
}

import field foos_ref.baz as baz {}
}
这将允许我在 foo 集群中搜索,然后获取相应的 foos 引用,但总体目标是为用户提供 foos 文档列表,这将需要从返回的 foo 文档列表中进行多次搜索,从而导致整体搜索速度变慢。
如果有推荐的方法来处理这些情况,任何帮助将不胜感激。谢谢你。

最佳答案

首先,请注意用于父子关系的引用字段只能是单个值而不是数组 ( https://docs.vespa.ai/documentation/reference/schema-reference.html#type:reference )。引用字段在子类型中指定以引用父类型。模式可以定义如下,其中 foos 是父类型, foo 是子类型:

schema foos {
document foos {
field id type string {
indexing: summary | attribute
}
field baz type string {
indexing: summary | attribute
}
}
}

schema foo {
document foo {
field foos_ref type reference<foos> {
indexing: attribute
}
field bars type array<string> {
indexing: summary | index
}
}
import field foos_ref.baz as foos_baz {}
import field foos_ref.id as foos_id {}
}
现在您可以使用查询中的栏和 foos_baz 字段来搜索 foo 文档。在 foos_id 字段上使用分组 ( https://docs.vespa.ai/documentation/grouping.html ) 来构建围绕 foos 文档的结果。这是在单个查询请求中处理的。

关于vespa - 在结构中搜索非原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64359593/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com