Szukam inspiracji/nazwania problemu/algorytmu dla poniższego przypadku.
Mam tabelę z danymi referencyjnymi/konfiguracją, która ma 25k elementów i zwartość się nie zmienia (zmienia, ale bardzo rzadko).
ATTR1 | ATTR2 | ATTR3 | ATTR4 | ATTR5 | OUTPUT | Rule |
---|---|---|---|---|---|---|
ANY | 1 | A | B | C | 2 | Rule#A |
ANY | ANY | ANY | B | C | 3 | Rule#B |
ANY | ANY | ANY | ANY | ANY | 5 | Rule#C |
X | 1 | A | B | C | 8 | Rule#D |
W aplikacji, per request, dostaję od kilku rekordów do kilkuset tysięcy rekordów do przetworzenia. Rekordy przychodzą z różnymi wartościami atrybutów: r_attr1,r_attr2,r_attr3,r_attr4,r_attr5
Wartość "ANY" w konfiguracji ma specjalne znaczenie i mówi "wszystko jedno jaka wartość atrybutu w rekordzie".
Dla każdego rekordu muszę w konfiguracji wyszukać rekord o najlepszym dopasowaniu (tj. o najmniejszej liczbie atrybutów dopasowanych via "ANY").
Przykład:
rekord=(attr1='X',attr2=1,attr3=A,attr4=B,attr5='C') pasuje do wszystkich Rule#A..D
rekord=(attr1='X',attr2=1,attr3=A,attr4=Z,attr5='D') pasuje tylko do Rule#C
To czego szukam, to struktura danych, która będzie miała najniższą złożoność wyszukiwania najlepszej reguły dla wskazanego rekordu.