使用看起来像
的搜索定义时search music{
document music{
field title type string {
indexing: summary | attribute | index
}
}
}
如果我通过开发文档处理器(我在Processing的上下文中保存已处理的标记)来使用我的标记字符串的自定义逻辑,那么如何在基本索引中存储标记?以及如何将它们映射回该字段的原始内容,同时回忆特定查询?我们通过ProcessingEndPoint解决它吗?如果是,怎么样?
答案 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。