How would I index a text field that requires explicit characters and wildcards on both ends (postgres)?
trigram indexes are exactly what you do want.  In ILIKE '%abc%', the '%' invite variation, while the 'abc' are exactly 'abc'.  Maybe you are thinking of the &lt;-> and % operators, which trigram indexes also support.  But you don't need to use them if you don't want to, you can just use ILIKE.