Не удается получить правильные результаты при полнотекстовом поиске postgre

Я разрабатываю простой сайт статей на бразильском португальском языке. Функция поиска основана на полнотекстовом поиске, но не возвращает ожидаемых результатов.

Я сделал это на postgresql. Вот упрощенная таблица:

Artigos
-id
-title -- article title
-intro -- article introduction
-content -- article body
-publishdate -- date of launch
-artigosts -- this will work as our fts index.

После создания таблицы я запустил:

UPDATE artigos SET artigosts = 
setweight(to_tsvector('pg_catalog.portuguese', coalesce(title,'')), 'A') || 
setweight(to_tsvector('pg_catalog.portuguese', coalesce(intro,'')), 'B') ||
setweight(to_tsvector('pg_catalog.portuguese', coalesce(content,'')), 'C');

CREATE INDEX artigosts_idx ON artigos USING gist (artigosts);

CREATE TRIGGER artigosts_tg 
BEFORE INSERT OR UPDATE ON artigos 
FOR EACH ROW EXECUTE PROCEDURE 
  tsvector_update_trigger('artigosts', 'pg_catalog.portuguese', 'title', 'intro', 'content');

Да, я собираюсь использовать простое взвешивание при поиске. Сделал индекс для ускорения, триггер, чтобы я мог вставлять и обновлять, не беспокоясь о переделке индекса и т. Д.

Что ж, насколько я понимаю, все в порядке. Но результатов нет. Простой пример.

Допустим, у меня есть "... banco de dados ... no banco ..." в качестве содержания одной статьи. Когда я это сделаю:

SELECT title, intro, content FROM artigos WHERE plainto_tsquery('banco de dados') @@ artigosts;

Он возвращает пустой набор. Я проверил столбец ts_vector и увидел предикаты banc и dad. Но я до сих пор не могу понять, почему он не возвращает строку, содержащую указанную статью.

Может кто-нибудь пролить свет на этот вопрос?

5
задан Dave 14 October 2010 в 17:42
поделиться