Intellect Board — cистема управления сайтомПостроение сайта на основе форума |
Intellect Board — cистема управления сайтом » Техническая поддержка версии 2.18 » PostgreSQL |
Правила раздела |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 8 9 10 ... 13 14 15 16 17 18 Модераторы: aerograf, wsx | Печать |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
-KoT- Ну вот, на локали у меня почти все работает, кроме следующих моментов: а) поиска (я его еще не делал), б) пересчета статистики, в) подсчета объема базы, г) backup. Соответственно, у меня к тебе два вопроса: а) как получить релевантность в числовом виде (в MySQL ее MATCH возвращает), б) как получить список таблиц в базе? ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
-KoT- |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 4 июня 2006 15:12 Сообщение отредактировано: 5 июня 2006 6:07
Ррелевантность в числовом виде возвращает функция rank из tsearch2: SELECT rank(fulltext_idx, to_tsquery('слово1 & слово2')) as rank вернет в поле "rank" релевантность в числовом виде. Список таблиц возвращается достаточно громоздким запросом, но если создать такую функцию: CREATE OR REPLACE FUNCTION show_tables() RETURNS SETOF name AS $$ то запрос: SELECT show_tables() выдаст список таблиц. Строка AND pt.relname NOT LIKE ('pg_ts_%') в теле функции нужна, если установлен модуль tsearch2, чтоб не показывать его спец.таблицы. |
-KoT- |
Кажется, еще одна ошибка форума — после FROM иногда самопроизвольно вставляются скобки. В теле функции show_tables() FROM pg_catalog.pg_class pt после FROM ссылка на таблицу pg_catalog.pg_class pt должна быть без скобок. |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Более-менее все сделал, только теперь оно ругается, что "tsearch locale not set". Где и как это задается? ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Да, я уже понял, что скобок быть не должно. А вставляются они из-за заморочек с модулем для MySQL, там это делалось для совместимости с версией 5.x. Впрочем, скоро попробую еще раз, может быть, после того как я переделал запросы, в MySQL тоже скобки станут не нужны. ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
-KoT- |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 4 июня 2006 22:13 Сообщение отредактировано: 4 июня 2006 22:16
Русская локаль для tsearch2 устанавливается сразу после коннекта с базой запросом: SELECT set_curcfg('default_russian') но здесь есть такие грабли: конфигурация russian_default в tsearch2 — в KOI8 (snowball, словарь russian_stem.c), и если кодировка базы тоже KOI8, все работает на ура. Как будет работать, если кодировка базы win1251, не знаю (скорее всего не будет) — я посредством некоторых плясок с бубном перевел tsearch2 в win1251. Делал это так: 1. В исходниках найти каталог snowball (у меня в FreeBSD было /usr/ports/databases/postgresql81-server/work/postgresql-8.1.3/contrib/tsearch2/snowball) и заменить в нем файл russian_stem.c прикрепленным файлом (тот же russian_stem.c, но преобразованный в win1251). После этого пересобрать tsearch2. 2. В каталоге, где лежат контиб-файлы (во Фре — /usr/local/share/postgresql/contrib) найти файл russian.stop и сковертировать его в win1251 (в *nix — через iconv, в win — любым доступным спосбом) То же самое с russian.stop можно сделать в исходниках — при сборке он просто копируется в рабочий каталог contrib. Прикрепленный файл (russian_stem.c, 22688 байт, скачан: 865 раз) |
-KoT- |
russian.stop в кодировке cp1251 Прикрепленный файл (russian.stop, 701 байт, скачан: 752 раза) |
-KoT- |
Когда-то эта функция писалась для другой цели, но сейчас, несолько доработанная, возможно пригодится для реализации бекапа: CREATE OR REPLACE FUNCTION show_ddl(table_name name) RETURNS text AS $$ SELECT show_ddl(имя_таблицы) вернет ddl таблицы. |
-KoT- |
Про индексы и триггеры забыл... Появится свободная минута — допишу. |
-KoT- |
Вот - теперь SELECT show_ddl('table_name') возвращает почти полный DDL. Этот код вставить между ddl := ddl||');'; и RETURN ddl; -- ******************* INDEXES *************************** Запрос: SELECT show_ddl('ib_post') Возвращаемое значение:CREATE TABLE ib_post ( |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 6 7 8 9 10 ... 13 14 15 16 17 18 Модераторы: aerograf, wsx | Печать |
Intellect Board — cистема управления сайтом » Техническая поддержка версии 2.18 » PostgreSQL |
1 посетитель просмотрел эту тему за последние 10 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
Ограничение доступа не отображаются разделы Архив версий Установка стиля на Intellect Board 2.22 Завершилась работа над новой версией 3.00 |
Самые активные 5 тем | |