public function findDataByKeywords(array $keywords, array $modCombinationIds = []): array
    {
        $result = [];
        if (count($keywords) > 0) {
            $columns = [
                'r.id AS id',
                'r.name AS name',
                'r.mode AS mode',
                'mc.order AS order'
            ];

            $queryBuilder = $this->entityManager->createQueryBuilder();
            $queryBuilder->select($columns)
                         ->from(Recipe::class, 'r')
                         ->innerJoin('r.modCombinations', 'mc');

            $index = 0;
            foreach ($keywords as $keyword) {
                $queryBuilder->andWhere('r.name LIKE :keyword' . $index)
                             ->setParameter('keyword' . $index, '%' . addcslashes($keyword, '\\%_') . '%');
                ++$index;
            }

            if (count($modCombinationIds) > 0) {
                $queryBuilder->andWhere('mc.id IN (:modCombinationIds)')
                             ->setParameter('modCombinationIds', array_values($modCombinationIds));
            }

            $result = $this->mapRecipeDataResult($queryBuilder->getQuery()->getResult());
        }
        return $result;
    }