求解类似数据如何搜索!-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

求解类似数据如何搜索!

2016-06-27 14:39:16 1922 1

数据格式如下
"10101010001001101100100011000100100100001011100001000010010101000101010101000101".....共计256位
就是除了1就是0的唯一标示符256位的跟64位的还有1024位的
这种标示符
目前我已经有256位的跟64位的了,目前数据我已经生成了800w条,陆续生成中

字符串1="10101101001010010111010101100001011101000101010010001000111001101010010101"...
字符串2="10101001001011010111010101000001011101000101110010001001111001101010010101"....
求这两个字符串的相似度 顺序比较 以下为相似度 计算

$len = strlen($hash1);
for ($i = 0; $i < $len; $i++){

if ($hash1[$i] !== $hash2[$i])
$count++;

}

return 1-($i/$len);
得到相似度
搜索要求为
从数据库中读取出跟 "字符串s" 相似度>0.9的,目前数据采用mysql储存,属于个人瞎胡闹搞得东西,不会采用商业数据库储存买不起,可以采用nosql储存,memcache储存,主要程序语言PHP,javascript算是预处理,我就会这两种!

求大神解这种数据如何搜索!!!!!!

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:47:36

    我能想到算法上的两个优化点。

    第一个,是你逐位判断的代码里面,只要$count大于$len的10%就不用循环下去了,相似度必然小于0.9。

    第二个,既然数据是自己生成的,那可以在生成时一并储存拆分值的十六进制数。

    举个例子,比如1024位的字符串,每16位为一个单位,共拆分为64个单位,每个单位的16位二进制数转换成4位16进制数,和这个1024位的字符串一并储存起来。
    每次比较时,先逐个比较这64个单位的数值是否相同,如果有58个相同,那相似度就有0.9以上。

    如果只有57个相同呢?剩下不同的7个4位16进制数,一共有4*7=28位十六进制数字,然后进行逐个比较。
    有a个相同,则1024位转化成256位的十六进制数的数字上的相似度等于((574)+a) / (644) ,他要大于0.9。也就是说,在逐个比较时,a大于等于0.9644 - 57*4 就不用判断了,相似度大于0.9。

    如果只有a-1个相同呢?把不同的28-(a-1)位转化为2进制,按上面的方法,逐个比较。
    有b个一样,相似度为((5716)+(a-1)4+b) / 1024,他要大于0.9,即b大于等于0.91024 - 5716 - (a-1)*4时,相似度大于0.9。

    把上面的57和a-1换成任意的x y就是实际情况了。虽然计算量还是很大,不过相比逐个比较小了很多了。

    另外,计算出每两个16位二进制数的单位的相似度的时候可以缓存起来,留给256位和64位比较时用。仔细想想量好像也很大……就不继续写了。

    0 0
相关问答

1

回答

如何获取数据呢?

2022-07-26 23:53:48 474浏览量 回答数 1

1

回答

如何实现多数据流非正交传输?

2022-04-11 08:12:30 219浏览量 回答数 1

1

回答

如何创建数据表映射关系?

2022-01-13 15:46:26 283浏览量 回答数 1

1

回答

如何在日志数据中搜索IP地址?

2020-03-26 23:13:57 253浏览量 回答数 1

1

回答

如何用列值替换pandas数据框中的每个值?

2019-01-22 17:23:46 2343浏览量 回答数 1

0

回答

OSS如何实现云端数据处理?

2017-10-18 09:58:55 1863浏览量 回答数 0

1

回答

请问安卓类似淘宝的搜索历史如何实现 ?

2016-03-18 14:43:12 2169浏览量 回答数 1

1

回答

数据结构 搜索二叉树的应用

2016-03-20 10:16:24 1458浏览量 回答数 1

1

回答

二进制码的数据如何搜索

2016-02-12 13:26:32 2158浏览量 回答数 1

3

回答

如何将数据库部署在阿里云里?

2011-11-09 20:38:43 11062浏览量 回答数 3
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
《开放搜索查询分析服务架构分享》
立即下载
O2O搜索优化实践之道
立即下载
《Proxima:多模态向量检索引擎》
立即下载