4

在搜索定义中,结构内的字段不能有“属性”索引。

http://docs.vespa.ai/documentation/reference/search-definitions-reference.html#field_types

此外,struct 和 maps 默认不是属性。生成的搜索定义如下所示:

struct nlp {
  field token type string {
      match: text //can't add indexing here
  }
}

field n type nlp {
      indexing: summary //can't add attribute here
}

如何添加搜索定义以便我们可以按“n.token”分组?是否可以为结构字段添加属性或索引?或者按不是属性的字段分组?

4

2 回答 2

5

如果要使用索引搜索运行分组,结构字段类型不能具有必要的先决条件,请参阅http://docs.vespa.ai/documentation/reference/search-definitions-reference.html#struct

对带有 mode=index 的结构字段真正可以做的唯一一件事就是将它们作为摘要(响应)的一部分。您可以添加一个自定义搜索器,该搜索器在结构字段上进行聚合,分析前 K 个检索到的命中。见http://docs.vespa.ai/documentation/searcher-development.html

使用 mode=streaming 您可以对结构字段进行分组,更多关于流在这里http://docs.vespa.ai/documentation/streaming-search.html

于 2017-10-24T19:08:24.690 回答
1

无法发表评论,因此发布为答案。

@jkb 这是否等于我们在某个不在结构中的字段上运行搜索,返回大量文档,然后在搜索器中合成它们(链接搜索器基本上会做类似的事情)?

说文档中的嵌套字段不能被索引并反过来有效搜索(我不想使用流式搜索)是否也正确,因此结构必须始终是平坦的索引搜索才能工作?在大多数情况下,我可以实现平面结构,但是对于具有对象数组的字段,我想在这些对象的某些属性上进行搜索呢?

"x" : [
    object: { attributes},
    object: {attributes}
 ]
于 2017-10-25T07:01:18.997 回答