我有以下架构
schema product {
document product {
field brand_name type string {
indexing: summary | index
}
field brand_name_tokens type array<string> { #computed field
....
}
}
我想在文档中有一个名为
brand_name_tokens
类型为 array<string>
的字段,该字段源自 brand_name
字段,如下
brand_name
,然后删除子字符串 [™®]
(如果存在)。我可以在写信给 Vespa 之前进行此处理。我想知道是否可以在模式中定义它,以便 Vespa 自动计算它。
你可以这样做 - 有一个“按正则表达式分割”。没有“删除子字符串”,但如果您不介意在 ™/® 上拆分,那么您可以使用稍微更高级的正则表达式来完成。
它看起来有点不同,因为你不能直接在 schema 中输入 utf-8 字符,所以你必须将 ™ 替换为
\xe2\x84\xa2
:
field brand_name_tokens type array<string> {
indexing: input brand_name | split "([. ®]|\xe2\x84\xa2)+" | summary
}
由于这是一个计算字段,因此应在
document product {
块之外定义。
请参阅 https://docs.vespa.ai/en/reference/indexing-language-reference.html#split 以及页面的其余部分,了解在索引时可以执行的操作。如果您需要做更多事情,您可以编写自定义文档处理器