如何在CosmosDB中计算折边距离?

问题描述

我的收藏中的每个商品都有一个64位数字,代表图像的dhash。我想通过此字段运行查询,该查询将返回汉明距离大于或小于某些参数的所有项目。

MysqL中,我将使用BIT_COUNT函数。 CosmosDB中是否有任何内置的类似物?如果不是,那么我的HAMMING_disTANCE UDF应该是什么样子,因为JS不支持对64位数字进行按位运算?

解决方法

为解决此问题,我从long.jsImageHash中提取了代码,供在CosmosDB UDF中使用。所有对他们的作者的敬意。

请在此处https://gist.github.com/okolobaxa/55cc08a0d67bc60505bfe3ab4f8bc33c

查看要点

用法:

set.seed(50)

QPA_G_Feb17 <- data.frame(density = c(rgamma(400,2,10),rgamma(400,2.25,9),5,7)),source = rep(c("Algae","Biofilm","Leaflitter"),each = 400))

但请注意以下几点:

  1. CosmosDB不支持将64位数字作为数字,您必须 将它们存储为字符串。
  2. 使用此UDF会花费很多RU

我在CosmosDB反馈论坛上创建了一个功能请求,以添加对此类功能的内置支持。如果您也对这些想法感兴趣,请对其投票: