gpt4 book ai didi

vespa - 使用继承的结构数组属性对搜索进行排名

转载 作者:行者123 更新时间:2023-12-04 08:40:37 26 4
gpt4 key购买 nike

我目前正在使用文档继承来避免在我制作的每个文档类型中都包含特定字段。它适用于大多数情况,但是当继承了结构数组时,在排名和搜索中使用该字段似乎会破坏事情。例如,采用以下应用程序。

schema base {
document base {
field simple_base type string {
indexing: summary | index
}

struct base_struct {
field name type string {}
}

field complex_base type array<base_struct> {
indexing: summary
struct-field name { indexing: attribute }
}
}
}
schema sub {
document sub inherits base {
field simple_sub type string {
indexing: summary | index
}

struct sub_struct {
field name type string {}
}

field complex_sub type array<sub_struct> {
indexing: summary
struct-field name { indexing: attribute }
}
}

rank-profile default inherits default {
first-phase {
expression: nativeRank(simple_sub, complex_sub.name, simple_base, complex_base.name)
}
}
}
如果您尝试准备此应用程序,您将收到错误
WARNING: invalid rank feature 'nativeRank(simple_sub,complex_sub.name,simple_base,complex_base.name)': The parameter list used for setting up rank feature nativeRank is not valid: Param[3]: Field 'complex_base.name' was not found in the index environment
如果你拿出 complex_base.name来自 nativeRank函数,它将正确编译。此外,如果您在输入以下 json 后尝试使用各种字段进行搜索:
{
"put": "id:content:sub::0",
"fields": {
"simple_base": "simple",
"simple_sub": "simple",
"complex_base": [
{
"name": "complex"
}
],
"complex_sub": [
{
"name": "complex"
}
]
}
}
那么结果如下:
/search/?query=simple_sub:simple -> 1 result
/search/?query=complex_sub.name:complex -> 1 result
/search/?query=simple_base:simple -> 1 result
/search/?query=complex_base.name:complex -> 0 results
如果这是预期的行为,那么除了复制/粘贴 complex_base字段到需要继承它的每个文档?谢谢您的帮助。

最佳答案

这与继承无关。 Vespa.ai 不支持对用户定义的结构字段进行排名。见 https://github.com/vespa-engine/vespa/issues/11580 .

关于vespa - 使用继承的结构数组属性对搜索进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64583331/

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