Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vespa.ai中的分区查询_Vespa - Fatal编程技术网

Vespa.ai中的分区查询

Vespa.ai中的分区查询,vespa,Vespa,发出查询时,Vespa在所有内容节点(通讯组中)上运行查询并返回结果。我有两个在搜索查询中始终存在的键。我是否可以根据这些键的值对数据进行分区,这样每当我查询Vespa时,就知道在哪里查找,而不是查询所有内容节点?您描述的一般用例不支持这一点。您可能希望了解的最接近的功能是使用流模式,例如,使用两个键的散列作为文档组ID 有关流媒体模式的详细信息: 有关文件ID方案的信息: 另一个选项(但可能不适合您的用例)是将文档分为不同的文档类型。在大多数情况下,您不希望使用数据属性来控制对内容节点的分

发出查询时,Vespa在所有内容节点(通讯组中)上运行查询并返回结果。我有两个在搜索查询中始终存在的键。我是否可以根据这些键的值对数据进行分区,这样每当我查询Vespa时,就知道在哪里查找,而不是查询所有内容节点?

您描述的一般用例不支持这一点。您可能希望了解的最接近的功能是使用
流模式
,例如,使用两个键的散列作为文档组ID

有关流媒体模式的详细信息:

有关文件ID方案的信息:


另一个选项(但可能不适合您的用例)是将文档分为不同的文档类型。

在大多数情况下,您不希望使用数据属性来控制对内容节点的分发,因为这将导致节点上的负载不均。负载不均匀意味着成本增加(因为您的成本将等于所有节点的负载与负载最大的节点相同的情况),以及潜在的操作问题(因为如果您继续向同一节点添加某些文档,则添加节点将不会缓解过载问题)


通常情况下,这样做可能节省的成本不大,因为确定内容节点上没有匹配项非常便宜,而且远远不能弥补上述缺点。例外情况可能是,如果查询非常大(包含数千个元素的张量),或者如果没有它,您将有一个非常大的扇出(数百个节点)。

是的,这也是我们的想法。索引时,我们将根据键值将文档放入不同的文档类型。当我们查询时,我们预先知道要查询哪种文档类型,这可以减少搜索集。可以共存的文档类型有多少个限制?没有限制,但每个文档类型都有开销。因此,如果您要走这条路,您可能希望限制文档类型的数量,例如,通过使用上面提到的散列中的比特子集。通过使用不同的文档类型,您将保持文档对内容节点的平均分布。不过,这将导致更大的复杂性,如果这将导致性能的提高,这是一个非常有效的问题。