À la base, il y a une formule query simple (sans arrayformula qui a été rajoutée sans raison dans l'exemple du reste)
=query(A2:B;"where A like '%"& D2 &"%' ")
le % devant la valeur de D2 et après permet d'indiquer que le terme de la colonne A doit comporter la valeur de D2 (https://www.sheets-pratique.com/fr/query/where-like)
Pour prendre en compte plusieurs termes, on écrit alors
=query(A2:B;"where A like '%"& D2 &"%' or A like '%"& D3 &"%' or A like '%"& D4 &"%'")
ce qui n'est pas très flexible car si on ajoute une nouvelle valeur en D5 il faut ajouter une nouvelle condition or dans la formule
C'est là qu'intervient textjoin (https://support.google.com/docs/answer/7013992?hl=fr) qui permet de concaténer plusieurs valeurs avec un séparateur, et ce séparateur sera ce qui est répété entre les différents critères
=query(A2:B;"where A like '%"& D2 &"%' or A like '%"& D3 &"%' or A like '%"& D4 &"%'")
--------------- ---------------
on peut donc écrire
=textjoin("%' or A like '%";true;D2:D)
et pour terminer cette écriture, il faut en mettre l'introduction et la conclusion
"where A like '%"&textjoin("%' or A like '%";true;D2:D)&"%' "