The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"postgres7 + tsearch2, freebsd"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"postgres7 + tsearch2, freebsd"  +/
Сообщение от Александр (??) on 21-Дек-09, 23:39 
Привет.
Есть старенькая БД на pgsql 7.14 (ставилась из портов), которую довольно проблематично перевести в данный момент на восьмерку. Параллельно на том же сервере стоит и 8.1 с установленным tsearch2.
Но гл. задача сейчас - внедрить в семерку tsearch2. Такое возможно? В местах установки pg7 папки contrib/tsearch2 не нашлось, а в дереве портов уже давным-давно кто-то сделал make distclean.
Думал выдернуть contrib/tsearch2 из исходников последней доступной семерки, но там в contrib/tsearch2 [g]make сразу отваливается, т.к. не может найти ../../Makefile.contrib (патамушта там тока Makefile.contrib.in :) ). Дальше я не стал копаться, т.к. настало 10 часов вечера и я, наконец-то, поехал домой...

tsearch2.so от восьмерки к семерке не подходит, ессно...

В общем, можно как-нибудь поставить tsearch на 7-ку? Готов помучиться, т.к. перевести БД на восьмерку с tsearch - тот еще гемморой (придется еще править чужие исходники ПО, а времени, как обычно, нету).
Заранее сенкс.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "postgres7 + tsearch2, freebsd"  +/
Сообщение от PavelR (??) on 22-Дек-09, 07:36 

>Думал выдернуть contrib/tsearch2 из исходников последней доступной семерки, но там в contrib/tsearch2
>[g]make сразу отваливается, т.к. не может найти ../../Makefile.contrib (патамушта там тока
>Makefile.contrib.in :) ). Дальше я не стал копаться, т.к. настало 10
>часов вечера и я, наконец-то, поехал домой...

Сделай глобальный configure, Makefile и появится. Только опции ему надо правильные подсунуть, а их можно вытащить из бинарной сборки, помоему pgxs их может выдать (опции сборки).

Или используй pgxs, но я точно не помню как это делается :-)

>
>tsearch2.so от восьмерки к семерке не подходит, ессно...
>
>В общем, можно как-нибудь поставить tsearch на 7-ку? Готов помучиться, т.к. перевести
>БД на восьмерку с tsearch - тот еще гемморой (придется еще
>править чужие исходники ПО, а времени, как обычно, нету).
>Заранее сенкс.

помучиться всеравно придется. если БД не utf-8 - tsearch на фряхе не заработает.
Если это так, то:

-делаем базу в utf-8.
-делаем пользователя.
-пользователю меняем дефолтную кодировку подключения: alter user ... encoding 'windows-1251';

дамп предварительно сливаем как есть, в 1251, и заливаем этим же пользователем, у которого кодировка подключения соответствует кодировке дампа - тогда произойдет переконвертация дампа в кодировку БД и на этом вроде всё :-)


----

меня вот интересует, какие такие специфические вещи 7-ки используются в софте, что его нельзя подключить к 8.х без изменений ?

Например, 8.3 имеет гораздо большую производительность, по сравнению с даже 8.2 (по практике использования постгреса на нагруженном веб-проекте)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "postgres7 + tsearch2, freebsd"  +/
Сообщение от Александр (??) on 22-Дек-09, 12:19 
>Сделай глобальный configure, Makefile и появится. Только опции ему надо правильные подсунуть,
>а их можно вытащить из бинарной сборки, помоему pgxs их может
>выдать (опции сборки).
>
>Или используй pgxs, но я точно не помню как это делается :-)
>

С утра сегодня тоже в голову пришло )) Но за наводку все равно спасиб ;)
А с опциями сборки разберемся, сдается мне, что порт вообще весь по умолчанию собирался.


>помучиться всеравно придется. если БД не utf-8 - tsearch на фряхе не
>заработает.

А вот тут не придется - база юникодная ;)


>меня вот интересует, какие такие специфические вещи 7-ки используются в софте, что
>его нельзя подключить к 8.х без изменений ?

Поскольку софт довольно старый и не моего авторства, так однозначно сказать сложно. Но знаю, что там активно используются oid-ы, id последней вставки берется перловым Pg с помощью $sth->{pg_oid_status} (или как-то так, точно не помню), и еще пару специф. вещей...


>Например, 8.3 имеет гораздо большую производительность, по сравнению с даже 8.2 (по
>практике использования постгреса на нагруженном веб-проекте)

С этим абсолютно согласен. Свои devel-сервера я перевел на 8.3 как только она вышла. А вот тот, где 7.14 + 8.1, сложно трогать - он боевой. Его админ согласен на апгрейд пока только если вылетит какой-нибудь диск из raid и если это будет утром первого января :))
Впрочем, мне до того сервера немного по барабану, моих проектов там почти нет. Просто задачку про tsearch2 подкинули :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "postgres7 + tsearch2, freebsd"  +/
Сообщение от Александр (??) on 22-Дек-09, 16:57 

>>помучиться всеравно придется. если БД не utf-8 - tsearch на фряхе не
>>заработает.
>
>А вот тут не придется - база юникодная ;)

Блин, если б знал, отмазывался бы от этой задачи как мог.

Помучиться все-таки придется.
tsearch2 времен 7-ки не поддерживает utf-8 "из коробки", но поддержку utf можно добавить позже - по умолчанию tsearch2 использует snowball_stem для кодировки koi8-r. Соответственно, если данные в utf, работать-то будет, но stem основу слов находить не будет, т.е. to_tsvector('сервер сервера сервере') вернет три элемента, а не один 'сервер' :(

Но я никак не могу понять, как мне добавить этот utf8 в tsearch. Как?
Есть несколько доков, но мне надо добавить _русский_ utf8, а не немецкий, греческий, португальский или украинский. Без всяких ispell словарей, просто snowball stem, но чтоб он лопатил unicode-данные, а не koi-8.

Поможет кто-нибудь?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "postgres7 + tsearch2, freebsd"  +/
Сообщение от PavelR (??) on 23-Дек-09, 10:34 
>[оверквотинг удален]
>находить не будет, т.е. to_tsvector('сервер сервера сервере') вернет три элемента, а
>не один 'сервер' :(
>
>Но я никак не могу понять, как мне добавить этот utf8 в
>tsearch. Как?
>Есть несколько доков, но мне надо добавить _русский_ utf8, а не немецкий,
>греческий, португальский или украинский. Без всяких ispell словарей, просто snowball stem,
>но чтоб он лопатил unicode-данные, а не koi-8.
>
>Поможет кто-нибудь?

посмотреть на код из 8.х и портировать оттуда куски кода, с целью реализации конвертации строк из юникода в нужную кодировку  и использование соответствующего стеммера?

всё просто - надо "чуть чуть" переписать :-))))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "postgres7 + tsearch2, freebsd"  +/
Сообщение от Александр (??) on 23-Дек-09, 12:06 
>
>посмотреть на код из 8.х и портировать оттуда куски кода, с целью
>реализации конвертации строк из юникода в нужную кодировку  и использование
>соответствующего стеммера?
>
>всё просто - надо "чуть чуть" переписать :-))))

Ну, russian_stem.c и russian_stem.h люди переделывают, на другую кодировку (cp1251), но вот переделки в русский utf8 я чего-то не нашел...
Я и snowball ставил и юникодный sbl качал, и stem.c/h с ним генерил, но какие-то они не такие получаются, не хочет их gcc хавать. В смысле, не катят они для сборки.

Насколько я понял, конвертация из одной кодировки в другую там и не нужна. Ведь задача стеммера - опознать окончания слов и относительно грамотно обрубить их, чтобы получилось что-то похожее на основу слова. Стеммер может ничего не знать о языке слова, руководствуясь только заранее заданными соответствиями и правилами поиска окончаний.
В общем, мне почти удалось отсрочить эти мытарства. Думаю, удастся и перекинуть это задание на кого-нибудь более другого, чем я :) А пока склонен полагать, что стеммер в tsearch2 времен pg7 не умеет двубайтные+ символы...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру