Het lijkt erop dat u de aaneenschakeling van al die velden wilt doorzoeken.
Je zou een query kunnen maken door precies dit te doen
... where to_tsvector('italian', name||' '||coalesce(decription,'')...) @@ to_tsquery('$word')
en bouw een index op exact dezelfde berekening:
create index your_index on shop
using GIN(to_tsvector('italian',name||' '||coalesce(decription,'')...))
Vergeet niet coalesce
. te gebruiken op kolommen die NULL-waarden accepteren.