我有一个包含以下字段的文档:
字段1
字段2
字段3
字段4
我有以下表格结构:

field1  |  field2  |  field3  |  field4  || result
--------------------------------------------------
foo                   bar                   MC
foo        test1                            MR
           test2                 test3      OM
foo        test1      bar                   CM

当一个文档带有field1是foo,field2(空值),field3是bar时,应该选择结果mc。
当一个带有field1的文档是foo,field2是test1,field3是bar时,应该选择结果cm。
当然,您可以检查每一列并在循环每一行之前保持匹配行的打开状态。
但是,这个表结构可能会变得非常大,我正在寻找某种算法来解决上述问题,在性能和良好的方式。
有什么想法吗?

最佳答案

正如@MarkoTopolnik所写,rdbms做你想做的事情但是如果您仍然想实现自己的算法,一个选项是创建一个树:级别1是field1,级别2是field2,等等。每个分支都是表的一行。如果你只有两个字段,这看起来像这样:

root----field1.valueA----field2.valueC---result1
    \                \
     \                \--field2.valueD---result2
      \
       \field1.valueB----field2.valueC---result3
                     \
                      \--field2.valueD---result4

可以在每个级别使用哈希表实现此树首先有一个哈希表,其中field1值作为键,hastables作为值。这些哈希表具有field2作为键和result作为值。因为您允许null作为值,所以必须使用HashMap而不是Hashtable

10-05 20:39
查看更多