You can create a fulltext index on the
description properties of both :Recipe and :Ingredient nodes.
As for how to return results that are only recipes (or only recipes that contain ingredients), you can't get that just from the index, but you can do some matching to get this. You can use a variable-length relationship of
*0..1, meaning that the node you start from might be the node that you want, otherwise traverse the relationship to get to the node:
... // assume we did our fulltext search to get the node variable `node`
So whether the node from the index is a :Recipe or an :Ingredient you should get the :Recipe node you want.