great read, but may I also suggest Array?
being able to have a field like:
ingredients VARCHAR[]
and index like: USING GIN (ingredients)
and using an operator like @> SELECT * FROM table WHERE ingredients @> ARRAY['mushrooms', 'sour cream']
gives you such amazing flexibility and speed, it's not even funny.also, while I was sad to not see PLV8 up there with PostGIS (an amazing extension, btw), I was still happy to see it mentioned with such gusto.