哈希不可哈希 设置问题解决方法

问题描述

设置

假设我们有一个 xml 产品lxml 元素),由一个唯一代码(字符串)或一个列表标识唯一代码(更多关于后者)。产品开始标记位于一个xml提要中的S1字节索引(开始),产品结束标记位于E1字节索引(结束)处.然后,第二个 xml 提要中有一个匹配产品Feed 具有相同的格式,但产品物理位置不同 - 第二个产品在第二个 Feed 中具有位置 S2E2 字节索引。

任务是将这两种匹配的产品放到一个地方(同时,同时)。此任务的一部分是获取两个提要(两组产品)的差异。目标是在处理大型 xml 提要时找到最适合 RAM 的解决方(每个最多 20,000 个产品,大约 200MB,可能会有很大差异)。一次性内存为2-3Gb。

为了实现目标,我们使用了 SAX 解析器,并将产品替换为它在提要中的位置,在大多数没有问题的情况下,我们得到:

products_from_first_Feed = { 'code': [S1,E1],... }
products_from_second_Feed = { 'code': [S2,E2],... }

# 'code' == 'code' so [S1,E1] match [S2,the products are common,great!  

问题

当产品由唯一代码列表描述时,问题就开始了,就像这样:

products_from_first_Feed = { ['sub_a','sub_b']: [S1,... }
products_from_second_Feed = { ['sub_a','sub_b']: [S2,... }

# ['sub_a','sub_b'] == ['sub_a','sub_b'] so [S1,great...?

这显然是不可能的。为了解决这种情况,代码被分解,每个子代码都与原始产品的位置相关联。

products_from_first_Feed = { 'sub_a': [S1,'sub_b': [S1,... }
products_from_second_Feed = { 'sub_a': [S2,'sub_b': [S2,E2] ... }

# 'sub_a' == 'sub_a' or 'sub_b' == 'sub_b' so [S1,great! 

然后,要找到通用代码,对键使用集合操作就足够了。

但是有一些问题

  1. 在这种情况下,产品将被同时解析为普通和差异(一个代码一个普通

     products_from_first_Feed = { 'sub_a': [S1,... }
     products_from_second_Feed = { 'sub_a': [S2,E2] ... }
    
  2. 信息重复——位置信息将乘以产品变体的数量(每个子代码实际上就是一个产品变体)。

是否有可能找到更好的解决方?我试图将产品表示为其位置和所有子代码的多维矩阵,但总是无法有效地从给定的单个子代码中检索所有子代码...

解决方法

现在通过对任何子代码的重复过滤器解决了第一个问题。

通过减少冗余信息量部分解决的第二个问题

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...