Dichiarazione del problema: Ho un input con più coppie di valori chiave e un elenco di attività memorizzate nel database con oggetto filtro. Come output ho bisogno di un elenco di attività che corrispondono ai valori di input in base all'oggetto filtro dell'attività.
Esempio:
Input (dalla richiesta http):
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5",
"key6": "value6",
}
Elenco attività (memorizzato in mongodb o cassandra):
{
"task": "task1"
"filter": {
"key1": "value1",
"key2": "value2",
}
}
{
"task": "task2"
"filter": {
"key3": "value3",
"key5": "value5",
}
}
{
"task": "task3"
"filter": {
"key3": "value3",
"key4": "value12",
}
}
{
"task": "task4"
"filter": {
"key2": "value2",
"key6": "value6",
}
}
{
"task": "task5"
"filter": {
"key1": "value1",
"key7": "value7",
}
}
{
"task": "task6"
"filter": {
"key3": "value3",
"key4": "value4",
}
}
Output previsto:
{
tasks: [task1, task2, task4, task6]
}
Qui, il filtro di task1 atrributes corrisponde al sottoinsieme degli attributi di input, ad esempio key1 & key2 (analogamente per task2, task4, task6), ma per task3 & gli attributi del filtro task5 non corrispondono al sottoinsieme dell'input.
Ho bisogno di una soluzione in grado di recuperare in modo efficiente l'elenco delle attività in base all'input. Ho provato un paio di cose come generare tutte le possibili combinazioni di attributi di input e database di ricerca per ciascuna combinazione, ma era molto inefficiente.
Se non è una soluzione reale, puoi fornirmi suggerimenti che posso provare o qualsiasi algoritmo in grado di risolvere questo problema.