Полный текст 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')
Другие вопросы по тегам