Vespa - Proton:Custom bucketing&查询

时间:2017-10-11 06:53:24

标签: vespa

参考文献:

id scheme

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(数字),则可以将数据分成时间范围(开始时间/结束时间)。标记为此类的所有文档将最终位于同一个存储桶中(将按照其配置的文档数量/大小的分割过程)。

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

&amp; 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