Intellect Board — cистема управления сайтомПостроение сайта на основе форума |
Intellect Board — cистема управления сайтом » Техническая поддержка версии 2.18 » PostgreSQL |
Правила раздела |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 10 11 12 13 14 15 16 17 18 Модераторы: aerograf, wsx | Печать |
-KoT- |
XXXX Pro написал: Слушай, а TRIGGER точно должен выполняться до вставки ряда (если я правильно понял, что значит BEFORE), а не после? Да, этим гарантируется заполнение поля fulltext_idx. Если по какой-либо причине транзакция не завершится (например, сбой сервера), отработает rollback и запись вообще не вставится. |
-KoT- |
Сейчас обнаружил, что при поиске в запросе участвуют обе талицы: INSERT INTO i_SearchResult (srid,srpid,relevancy) SELECT 23,p_id, rank(fulltext_idx,to_tsquery('трам-пам-пам')) FROM i_Forum f, i_Topic t, i_Post p WHERE (rank(fulltext_idx,to_tsquery('трам-пам-пам))>0) AND (true) AND p_tid=t_id AND t_fid=f_id AND p__premoderate=0 LIMIT 100 и, естественно вылетает ошибка "ERROR: ссылка на колонку "fulltext_idx" неоднозначна" Нужно как-нибудь передать в rank() ссылу на таблицу: p.fulltext_idxПри поиске темы таблица только одна — prefix_Topic — ошибка не возникает, поэтому и не заметил сразу |
-KoT- |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 28 июня 2006 23:17 Сообщение отредактировано: 28 июня 2006 23:20
Попробовал добавить еще одну переменную в db_match. в search.php: ...... То же самое в misc.php, только $table="prefix_Topic.";в pssql.php: function db_match($table,$mode,$text,$col1,$col2="") { Вроде работает.... |
-KoT- |
Я дико извиняюсь, давно добавил в функцию db_match $text=preg_replace("/(?<!^)\s+(?!$)/is","|",$text); но забыл отразить это в форуме. Без этого многословный поиск работать не будет. Слегка модернизировал поиск, в pssql.php вместо function db_match($table,$mode,$text,$col1,$col2="") { добавил две функции:function db_match($table,$mode,$text,$col1,$col2="") { и в search.php: $sql = "INSERT INTO ".... SELECT... ".db_match(...)." FROM "....."WHERE (".db_match2(....).">0) AND.... Теперь поиск работает корректно (раньше многословные запросы иногда давали неожиданный результат). Для MySQL db_match и db_match2 — одна и та же функция.Если в поле поиска вводить "слово1 слово2 слово3", поиск будет работать по алгоритму "слово1 OR слово2 OR слово3". Если ввести "слово1&слово2&слово3", алгоритм — "слово1 AND слово2 AND слово3". |
-KoT- |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 29 июня 2006 17:04 Сообщение отредактировано: 29 июня 2006 20:01
Шлифуем поиск... Функции полнотекстового поиска в pssql.php: function db_match($tab,$mode,$text,$col1,$col2="") { P.S. C большой вероятностью можно утверждать, что теперь IntB подерживает PodtgreSQL |
-KoT- |
Сразу не обратил внимания, что & преобразовался в амперсанд... |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик Откуда: Москва Всего сообщений: 3299 Рейтинг пользователя: 70 Ссылка Дата регистрации на форуме: 29 сен. 2001 |
Исправления внес. Завтра или послезавтра выложу обновление (сейчас просто занят тем, что привожу HTML-код к стандарту HTML 4.01 Transitional). ---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно! |
-KoT- |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 29 июня 2006 23:51 Сообщение отредактировано: 30 июня 2006 0:01
Пока не выложил — последний штрих (в переменную $text не всегда попадает &, иногда и &): function db_match($tab,$mode,$text,$col1,$col2="") { |
-KoT- |
Профиль | Сообщить модератору | Игнорировать
NEW! Сообщение отправлено: 30 июня 2006 0:03 Сообщение отредактировано: 30 июня 2006 0:08
Блин, не с того файла скопировал, вот правильно (pssql.php): function db_match($tab,$mode,$text,$col1,$col2="") { |
-KoT- |
Спать, однако, пора... Предыдущий пост еще раз отредактирован... |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 10 11 12 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 тем | |