我在一个以它们的名字为特征的网络服务器上有很多图像。每个文件都属于多个类别,每个人都属于一个类别组。例如:
group_fruit = ["apple", "banana", "pear"];
group_color = ["red", "blue", "yellow"];
group_origin = ["Italy", "France", "Portugal"];
a blue apple from Italy will be 00_01_00_uniqueid.jpg
如果我想查找查找类别的图像(例如,我想要来自法国或葡萄牙的蓝色或黄色梨),我可以通过简单的方式在文件列表中查找文件。问题是当我有大量类别组(例如 10 个)时,每个类别都有很多类别(即 10 个),因为我一次只能下载100 个项目的文件列表。在这种情况下,我可以有一个查询生成 10^10 个可能的答案(最坏的情况)。
鉴于接近最坏情况的任何事情都将难以管理,我想按照以下步骤进行:
我制作了几个使用前五个组中的类别命名的 xml 文件,我在其中存储具有该类别的图像数量以及其余组中的其他五个类别。例如
01_00_03_00_04.xml contains:
01_00_03_00_04_00_02_04_05_07 = 3
01_00_03_00_04_04_04_03_00_08 = 12
01_00_03_00_04_05_08_09_01_02 = 5
这意味着我有 12 张图像,例如 01_00_03_00_04_04_04_03_00_08 类别。这样,如果我正在寻找特定的特征,我可以下载与我正在寻找的前五组特征兼容的 xml,然后我可以搜索每个 xml 以查找是否有每个可能组合的结果类别。在最坏的情况下,我将在 10^5 xml 中搜索 10^5 个类别。
对所有文件使用单个大 xml 的解决方案不适用,因为它太大而无法下载(大延迟)。为每个可能的类别组合下载列表的解决方案会太慢(因为我可以有几个组合没有结果,所以用户会期望太多时间来看到第一个结果)。这就是为什么我想采用中间解决方案的原因。
我知道最好的方法是使用数据库,但我想找到一个客户端解决方案,以免廉价服务器超载。
编辑:问题是:您对更有效的方法有任何想法吗?
感谢您的耐心等待