Váš jednoduchý případ lze vyřešit jednoduchým dotazem pomocí ANY konstrukt a ~* :
SELECT *
FROM tbl
WHERE col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));
~* je operátor shody regulárního výrazu bez ohledu na velikost písmen. Používám to místo ILIKE takže můžeme použít původní slova ve vašem řetězci, aniž bychom museli vyplňovat % pro ILIKE . Výsledek je stejný - kromě slov obsahujících speciální znaky:%_\ pro ILIKE a !$()*+.:<=>?[\]^{|}- pro vzory regulárních výrazů. Možná budete muset uniknout speciálním postavám v obou směrech, abyste se vyhnuli překvapení. Zde je funkce pro regulární výrazy:
- Funkce Escape pro regulární výraz nebo vzory LIKE
Ale mám neodbytné pochybnosti, to bude vše, co budeš potřebovat. Viz můj komentář. Mám podezření, že potřebujete Fulltextové vyhledávání s odpovídajícím slovníkem pro váš přirozený jazyk, abyste poskytli užitečné odvození slov ...
Související:
- IN vs. ANY operátor v PostgreSQL
- Varianty výkonu dotazů PostgreSQL LIKE
- Shoda vzoru s LIKE, SIMILAR TO nebo regulárními výrazy v PostgreSQL