Uw eenvoudige geval kan worden opgelost met een eenvoudige vraag met behulp van de ANY
constructie en ~*
:
SELECT *
FROM tbl
WHERE col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));
~*
is de hoofdletterongevoelige overeenkomstoperator voor reguliere expressies. Ik gebruik dat in plaats van ILIKE
zodat we originele woorden in je string kunnen gebruiken zonder dat we %
. hoeven in te vullen voor ILIKE
. Het resultaat is hetzelfde - behalve voor woorden met speciale tekens:%_\
voor ILIKE
en !$()*+.:<=>?[\]^{|}-
voor reguliere expressiepatronen. Mogelijk moet u op beide manieren aan speciale tekens ontsnappen om verrassingen te voorkomen. Hier is een functie voor reguliere expressies:
- Escape-functie voor reguliere expressies of LIKE-patronen
Maar ik heb knagende twijfels dat zal alles wat je nodig hebt. Zie mijn opmerking. Ik vermoed dat je Full Text Search nodig hebt met een bijpassend woordenboek voor je natuurlijke taal om bruikbare woordstammen te vinden ...
Gerelateerd:
- IN vs ELKE operator in PostgreSQL
- PostgreSQL LIKE prestatievariaties voor query's
- Patroon komt overeen met LIKE, VERGELIJKBAAR MET of reguliere expressies in PostgreSQL