Kasus sederhana Anda dapat diselesaikan dengan kueri sederhana menggunakan ANY
membangun dan ~*
:
SELECT *
FROM tbl
WHERE col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));
~*
adalah operator pencocokan ekspresi reguler yang tidak peka huruf besar-kecil. Saya menggunakannya sebagai ganti ILIKE
sehingga kami dapat menggunakan kata-kata asli dalam string Anda tanpa perlu memasukkan %
untuk ILIKE
. Hasilnya sama - kecuali kata-kata yang mengandung karakter khusus:%_\
untuk ILIKE
dan !$()*+.:<=>?[\]^{|}-
untuk pola ekspresi reguler. Anda mungkin perlu melarikan diri dari karakter khusus untuk menghindari kejutan. Berikut adalah fungsi untuk ekspresi reguler:
- Fungsi Escape untuk ekspresi reguler atau pola LIKE
Tetapi saya memiliki keraguan yang mengganggu bahwa hanya itu yang Anda butuhkan. Lihat komentar saya. Saya menduga Anda memerlukan Pencarian Teks Lengkap dengan kamus yang cocok untuk bahasa alami Anda untuk memberikan kata dasar yang berguna ...
Terkait:
- IN vs APAPUN operator di PostgreSQL
- Variasi kinerja kueri SEPERTI PostgreSQL
- Pencocokan pola dengan LIKE, SIMILAR TO atau ekspresi reguler di PostgreSQL