假设来自一台主机的具有不同分辨率的一张照片具有多个副本。
在metasearcher阶段,我想检查2张图片是否具有相同的名称,但不是简单的名称(例如image.jpg,photo.jpg)。 ..)。在这种情况下,我只想包含高分辨率的图片。
示例: 搜索“城市”
https://znews-photo.zadn.vn/w480/Uploaded/lerl/2017_10_07/DJI_005701_zing.jpeg
https://znews-photo.zadn.vn/Uploaded/lerl/2017_10_07/DJI_005701_zing.jpeg
第一个不应返回。
这是来自网络搜索团队的工作,因此我非常在意性能。
我目前的做法:
*)为避免使用琐碎的名称,请遍历用于图像搜索的测试查询,对用“ /”标记后的不同URL中每个标记的出现次数进行计数,并手动选择URL中出现次数最多的类似标记到“照片”,“图片”,“背景”等等。最后,我将获得一组琐碎的名称。
*)对于同名的图片,每张图片的分辨率均为dHash,对于每对dHash差小于一定阈值的图片,我将其分辨率降低。< / p>
编辑:在咨询了我的经理之后,我意识到我误解了这些要求。我应该仅在URL上工作而不访问实际图像(这太昂贵了)。在上面的示例中,我应该能够基于两者的URL差异丢弃第一张图像。而且,结果是期望的准确性不高,任何大于85%的东西都应该是不错的。
我非常感谢任何关于改进当前方法的想法/见解。
答案 0 :(得分:0)
如果不访问图像内容,将无法实现鲁棒的解决方案。但是,如果您仍然想直接使用URL,请注意以下几点:
完全不同的方法是通过发出HTTP HEAD请求来检索图像字节大小。在99%的情况下,服务器将返回Content-Length
标头。 HTTP HEAD不下载内容,仅下载HTTP标头。因此,它不像下载整个图像那样昂贵。