处理后的令牌如何存储在Vespa的基本索引中?

时间:2018-03-06 08:47:29

标签: vespa

使用看起来像

的搜索定义时
search music{
    document music{
        field title type string {
            indexing: summary | attribute | index
        }
    }
}

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

1 个答案:

答案 0 :(得分:3)

首先,您几乎肯定会删除此字段的“属性” - “属性”表示除了创建搜索索引外,文本还将存储在内存中的转发存储中。这对于用于排序,分组和排名的结构化数据可能是有用的,但对于自由文本字段则不是。

不必要的细节:

您可以通过添加文档处理器组件来执行自己的文档处理: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。