powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос про полнотекстовый поиск
13 сообщений из 13, страница 1 из 1
вопрос про полнотекстовый поиск
    #35292078
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Такая проблема возникла - хочу сделать поиск.
создаю таблицу к примеру через phpPgAdmin
create table test1 (i_gid integer, c_text text, v_text tsvector);
выдает ошибку^ ERROR: type "tsvector" does not exist
LINE 1: ...te table test1 (i_gid integer, c_text text, v_text tsvector)
версия postgres 8.2.3
в чем может быть причина?
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35292112
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полнотекстовый поиск до версии 8.3 надо устанавливать специально. Он не идёт в комплекте с сервером
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35292121
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
понятно. а поподробнее можете ответить? что именно ставить нужно?
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35293180
Vladimir Muzhilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из contrib поставить tsearch2
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35294091
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно. Разобрался. Спасибо большое!
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35584516
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите еще, пожалуйста, почему английские слова ищутся правильно, а русские нет.
например:
SELECT * FROM my_catalogs WHERE v_text @@ to_tsquery('машин а ')
выдает -
id c_text v_text
3 машина 'машина':1
SELECT * FROM my_catalogs WHERE v_text @@ to_tsquery('машин у ')
ничего не выбирает
кодировка utf8, конфигурация такая:

CREATE TEXT SEARCH DICTIONARY mydict_russian_ispell (
TEMPLATE = ispell,
DictFile = russian,
AffFile = russian,
StopWords = russian
);

CREATE TEXT SEARCH CONFIGURATION public.mydict_ru (PARSER = default);
COMMENT ON TEXT SEARCH CONFIGURATION public.mydict_ru IS 'conf. for mydict ru';

ALTER TEXT SEARCH CONFIGURATION mydict_ru ADD MAPPING
FOR email, url, url_path, host, file, version,
sfloat, float, int, uint,
numword, hword_numpart, numhword
WITH simple;

ALTER TEXT SEARCH CONFIGURATION mydict_ru ADD MAPPING
FOR word, hword_part, hword
WITH mydict_russian_ispell;
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35585977
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35590976
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще раз подниму тему.
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35591066
ТТПТ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чеклист
0. client_encoding правильный ли выставлен?
1. ispell-овские файлы скачаны и положены куда следует?
2. права на их чтение postgres имеет?
3. в UTF-8 ли они?
4. конфигурация FTS по умолчанию какая? select ts_debug('машину') это подтверждает?
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35591112
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТТПТЧеклист
0. client_encoding правильный ли выставлен?
1. ispell-овские файлы скачаны и положены куда следует?
2. права на их чтение postgres имеет?
3. в UTF-8 ли они?
4. конфигурация FTS по умолчанию какая? select ts_debug('машину') это подтверждает?
0. show client_encoding -> utf8
1. версия postgresql - 8.3, поэтому ispellовский файлы по идее стоят штатно
2. 3. как это проверить?
4. select ts_debug('машину') - >
(word,"Word, all letters",машину,{english_stem},english_stem,{машину})
ага, почему-то english_stem -значит русская конфигурация не сработала?
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35592176
intheair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roma28
1. версия postgresql - 8.3, поэтому ispellовский файлы по идее стоят штатно
2. 3. как это проверить?


1. штатно русские не стоят
если дело в этом, то вам надо сюда POSTGRESQL_SHARE_DIR/tsearch_data
положить файлы
russian_ispell.affix
russian_ispell.dict
в нужной вам кодировке (iconv -f koi8-r -t utf8)
сами файлы можно взять здесь http://wiki.services.openoffice.org/wiki/Dictionaries#Russian_.28Russia.29

2. если смогли создать словарь и добавить его к конфигурации - значит ошибок не было
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35592917
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
intheair
1. штатно русские не стоят
если дело в этом, то вам надо сюда POSTGRESQL_SHARE_DIR/tsearch_data
положить файлы
russian_ispell.affix
russian_ispell.dict
в нужной вам кодировке (iconv -f koi8-r -t utf8)
сами файлы можно взять здесь http://wiki.services.openoffice.org/wiki/Dictionaries#Russian_.28Russia.29

2. если смогли создать словарь и добавить его к конфигурации - значит ошибок не было
понятно, спасибо! попробую кинуть туда файлы
...
Рейтинг: 0 / 0
вопрос про полнотекстовый поиск
    #35616943
roma28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все дело оказалось в том, что конфигурация по умолчанию стояла english
когда в сессии ставлю SET default_text_search_config = 'mydict_ru';
-все нормально работает
ps для тех, кто столкнется с таким же нюансом - чтобы не выставлять каждый раз default_text_search_config, можно один раз отредактировать /var/lib/postgresql/data/postgresql.conf
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос про полнотекстовый поиск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]