如何在 Vespa 架构中的字段上应用自定义分析器

问题描述 投票:0回答:1

我有以下架构

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 自动计算它。

search vespa
1个回答
0
投票

你可以这样做 - 有一个“按正则表达式分割”。没有“删除子字符串”,但如果您不介意在 ™/® 上拆分,那么您可以使用稍微更高级的正则表达式来完成。

它看起来有点不同,因为你不能直接在 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 以及页面的其余部分,了解在索引时可以执行的操作。如果您需要做更多事情,您可以编写自定义文档处理器

© www.soinside.com 2019 - 2024. All rights reserved.