Полный текст Postgres
Я создал индекс для полнотекстового поиска в postgresql.
CREATE INDEX pesquisa_idx
ON chamado
USING
gin(to_tsvector('portuguese', coalesce(titulo,'') || coalesce(descricao,'')));
Когда я запускаю этот запрос:
SELECT * FROM chamado WHERE to_tsvector('portuguese', titulo) @@ 'ura'
Он вернул мне несколько строк.
Но когда мой аргумент указан в верхнем регистре, строки не возвращаются. Например:
SELECT * FROM chamado WHERE to_tsvector('portuguese', titulo) @@ 'URA'
Когда аргумент 'ura', я получаю несколько строк; когда аргумент 'URA', я не получаю никаких строк.
Почему это происходит?
1 ответ
Решение
Вы не получите совпадений во втором случае, так как to_tsvector() строчные регистры всех лексем. Используйте to_tsquery() для построения запроса, он также позаботится о проблемах с кейсом:
SELECT * FROM chamado WHERE to_tsvector('portuguese', titulo) @@ to_tsquery('portuguese', 'URA')