3

在使用看起来像的搜索定义时

search music{
    document music{
        field title type string {
            indexing: summary | attribute | index
        }
    }
}

如果我通过开发文档处理器(我在处理的上下文中保存已处理的标记)使用我的自定义字符串标记逻辑,如何将标记存储在基本索引中?以及如何将它们映射回字段的原始内容,同时针对特定查询进行召回?我们通过ProcessingEndPoint解决它吗?如果是,如何?

4

1 回答 1

4

首先,您几乎可以肯定地删除该字段的“属性”——“属性”意味着文本将存储在内存中的前向存储中,此外还会创建用于搜索的索引。这对于用于排序、分组和排名的结构化数据可能很有用,但对于自由文本字段则不然。

不必要的细节:

您可以通过添加文档处理器组件来执行您自己的文档处理:http: //docs.vespa.ai/documentation/docproc-development.html。用于索引的令牌信息存储为索引器使用的文本上的注释:http ://docs.vespa.ai/documentation/annotations.html 在 Vespa 中执行此操作的代码(由文档处理器调用)是https:/ /github.com/vespa-engine/vespa/blob/master/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotator.java,以及它添加的注释,在索引期间使用是https ://github.com/vespa-engine/vespa/blob/master/document/src/main/java/com/yahoo/document/annotation/AnnotationTypes.java. 您还需要在搜索器中的查询端进行相同的标记化:http: //docs.vespa.ai/documentation/searcher-development.html

但是,有一种更简单的方法可以做到这一点:您可以按照此处所述插入自己的标记器:http://docs.vespa.ai/documentation/linguistics.html:创建您自己的组件子类化 SimpleLinguistics 并覆盖 getTokenizer 以返回你的实施。这将由 Vespa 在文档处理和查询方面根据需要执行。

这样做的原因通常是为英语以外的其他语言提供语言学。如果您这样做,请考虑将您的语言学代码提供给 Vespa。

于 2018-03-06T13:58:05.987 回答