2013-04-30 3 views
1

Я создал индекс для полнотекстового поиска в postgresql.Fulltext Postgres

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», я не получаю никаких строк.

Почему это происходит?

ответ

3

Вы не получаете совпадений во втором случае, так как to_tsvector() уменьшает все лексемы. Используйте to_tsquery() для создания запроса, он также позаботится о проблемах:

SELECT * FROM chamado WHERE to_tsvector('portuguese', titulo) @@ to_tsquery('portuguese', 'URA') 
+0

Спасибо за помощь! –