2013-08-11 6 views
4

Теперь я узнаю о полнотекстовом поиске в PostgreSQL 9.2.3. Однако у меня есть проблема. Я бегу этот пример:Полнотекстовый поиск по PostgreSQL

CREATE TABLE messages (title text,body text,tsv tsvector); 

CREATE TRIGGER tsvectorupdate 
BEFORE INSERT OR UPDATE ON messages FOR EACH ROW EXECUTE PROCEDURE 
tsvector_update_trigger(tsv, 'pg_catalog.english', title, body); 

INSERT INTO messages VALUES('title here', 'the body text is here'); 

К сожалению, после того, как:

SELECT title, body FROM messages WHERE tsv @@ to_tsquery('title & body') 

я не получаю результат - 0 возвращаемых строк. Не могли бы вы рассказать мне, почему? Согласно документации PostgreSQL, она должна работать.

только «titl» и «bodi» в качестве запроса получают подходящий результат. Зачем?

ответ

9

to_tsquery только с одним аргументом использует конфигурацию текстового поиска по умолчанию, которая кажется не английской в ​​вашем случае.

Вы можете использовать форму с явным текстом конфигурации, чтобы получить ожидаемый результат:

SELECT title, body FROM messages 
    WHERE tsv @@ to_tsquery('english', 'title & body') 

Использование SHOW default_text_search_config в SQL, чтобы увидеть, что конфигурация текста в сущности и SET default_text_search_config TO 'english' изменить его на английский.

+0

Dan, как я могу установить другие конфигурации? Мне нужно использовать его для китайцев. – Growler

Смежные вопросы