3

参考:

身份证方案

Format: id:<namespace>:<document-type>:<key/value-pairs>:<user-specified>

http://docs.vespa.ai/documentation/content/buckets.html
http://docs.vespa.ai/documentation/content/idealstate.html

通过使用文档 ID 格式的 32 LSB(n / g 选择),可以在用户定义的分桶逻辑中构造数据。

但是,查询逻辑对于如何根据预先做出的决定将查询路由到特定的存储桶范围并不是很清楚。

例如,如果我可以定义 n(一个数字)压缩范围,则可以将数据拆分为一个时间范围(开始时间/结束时间)。标记为此类的所有文档最终都将放在同一个存储桶中(这将按照配置的文档数量/大小进行拆分)。

但是,我如何编写以这种方式索引的数据的搜索查询?是否可以指示处理器选择特定的存储桶或存储桶范围(以防分配算法可能已移动存储桶)?

4

2 回答 2

4

streaming.groupname您可以通过指定查询属性在查询中选择一个存储桶。

在 http 请求中添加

&streaming.groupname=[group] 

或在搜索器中

query.properties().set("streaming.groupname","[group]").

如果您想要多个存储桶,请改用参数streaming.selection,它接受任何文档选择表达式:http ://docs.vespa.ai/documentation/reference/document-select-language.html

要指定例如两个存储桶,请使用 set streaming.selection(在 HTTP 请求或搜索器中)来

id.group=="[group1]" and id.group=="[group2]"

http://docs.vespa.ai/documentation/streaming-search.html

请注意,仅当每个查询只需要搜索一个或几个存储桶时才应使用流式搜索。它避免了构建反向索引,这在这种特殊情况下(仅)更便宜。

于 2017-10-11T07:32:11.890 回答
0

&streaming.* 参数在此处描述http://docs.vespa.ai/documentation/reference/search-api-reference.html#streaming.groupname

这仅适用于配置了 mode=streaming 的文档类型,对于默认模式索引,您无法控制查询路由http://docs.vespa.ai/documentation/reference/services-content.html#document

于 2017-10-11T08:03:31.553 回答