Функции поиска

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Аватара пользователя
Pattern
phpBB 1.0.0
Сообщения: 4
Стаж: 17 лет 11 месяцев
Откуда: Санкт-Петербург

Функции поиска

Сообщение Pattern »

Много уважаемые Гуру!
Кто мне объяснит сеё явление

Код: Выделить всё

includes/functions_search.php
301:   $sql = "SELECT word_id 
302:      FROM " . SEARCH_MATCH_TABLE . " 
303:      GROUP BY word_id 
304:      HAVING COUNT(word_id) > $common_threshold";
Тот кто писал эту билеберду вообще имел примерное представление, что он хотел из него получить?
Я на этот участок и не обратил бы ни малейшего внимания, если бы мне хостер на него не тыкнул носом, что слишком долгая обработка данных с нулевым результатом.
Или может это специально сделано для создания тормоза на форуме? Так и без этих "плюх" на нём достаточно нужно стружки снять для стабильной и быстрой работы.
Так вот вопрос, что это за фрукт и для чего он нужен?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

А с чего вы взяли, что это - белиберда?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Pattern
phpBB 1.0.0
Сообщения: 4
Стаж: 17 лет 11 месяцев
Откуда: Санкт-Петербург

Сообщение Pattern »

Хм... Ну тогда давайте "расчленим" данный запрос и разберёмся, что же в нём на самом деле не так:

Код: Выделить всё

SELECT word_id 
FROM " . SEARCH_MATCH_TABLE . " 
GROUP BY word_id
Во первых, в этой части запроса идёт выборка ВСЕГО ОДНОГО ПОЛЯ, но это не самое важное.
Эквивалентом данного запроса может послужить например такой запрос.

Код: Выделить всё

SELECT DISTINCT word_id 
FROM " . SEARCH_MATCH_TABLE . "
Конечно, кому как удобнее смотреть на код, лично для меня второй (который я переписал) запрос более понятен. Итак, в результате мы получаем список с уникальными word_id. Теперь в запрос добавляем

Код: Выделить всё

HAVING COUNT(word_id) > $common_threshold";
То есть говоря "литературным" языком, мы требуем этим запросом выбрать из полученного списка тот word_id, который встречается больше $common_threshold раз. :shock:
В итоге, данный запрос возвращает значение 0 при любом раскладе, потому как список то - уникален. :wink:
Вот вам и загадочка: что именно хотели получить разработчики через данный запрос? :roll:
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Сначала выполняется условие и лишь потом идет группировка. Поэтому утверждение о том что результат всегда нулевой неверно.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 18 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Заметил одну неприятную особенность поиска.
В предложенни выбора форума поиска - светится закрытый. Плюс если параметр задать по сообщению, в результате выводит сообщение с закрытого форума. Права на форум установлены - везде админ, читать регистрированные (обязательное условие).
Как этого избежать, может мод какой поисковый сущестувет? Что бы в админке задавать разрешение или запрет на определенный forum_id не взирая на установленные права. Или подскажите как код подправить на запрет вывода информации с определенного forum_id.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 18 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

fskon
Посмотрите
http://www.phpbbhacks.com/download/2216 (открытые\закрытые темы)
http://www.phpbbhacks.com/download/6894 (исключение постов из индексирования, но требуется, по-моему, переиндекс)
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 18 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

По первой ссылке мод добавляет определяющие поиска, закр-открыте темы.
Второй для меня не понятен. Со своим скудным английским, по описанию вроде то. Но совершенно не затрагивает search.php. После установки желаемого результата так же не наблюдаю. В админке галочка появилась - " Index posts for searching" вроде как раз говорит что помеченный форум будет идексироваться поиском. Снимаем галочку ищем и находим :?
Тут "топориком" попытался поработать в файле search.php
В двух местах где

Код: Выделить всё

$sql = "SELECT pt.post_text, pt.bbcode_uid и т.д
$sql = "SELECT t.*, f.forum_id, f.forum_name, и т.д
Добавил AND f.forum_id = t.forum_id NOT IN (ID форума)
Получилось, с закрытых форумов теперь инфа не выводится, но счетчик найденных сообщений считает вместе с закрытыми. А если искомое находится только в закрытом, то выводит кол-во найденных сообщений плюс пустую табличку =) Нужно как то добиться что бы не считались сообщения с закрытых форумов, и вместо пустой форумской таблички надпись как "Ничего не найдено".
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 18 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

fskon писал(а):Снимаем галочку ищем и находим
Палыч писал(а):но требуется, по-моему, переиндекс)
Сначала снять все галочки, затем переиндексировать.
Иначе конечно будет находиться, таблицы то уже созданы :)

Добавлено спустя 17 минут 28 секунд:
fskon писал(а):Добавил AND f.forum_id = t.forum_id NOT IN (ID форума)
Не рационально, имхо.
Во-первых, усложнение запроса (нагрузки)
Во-вторых, индексирование закрытых форумов (наращивание поисковых таблиц = 1\3 веса всей базы) будет продолжаться (бесполезно).
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 18 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Палыч, что значит переиндексировать? :D
Галки снял со всех форумов, а дальше... Он по идее вообще не должен ничего находить когда галки на всех форумах сняты.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 18 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

fskon писал(а): Он по идее вообще не должен ничего находить когда галки на всех форумах сняты.
По чьей идее? По вашей?
К сожалению, она не верна 8) Объяснять долго, захотите - прочтёте сами.
Рекомендую МОД DB Maintenance. Ставится за минуту, пользы - много. Есть на форуме (поиск).
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

fskon писал(а):В предложенни выбора форума поиска - светится закрытый.
А вы не пробовали искать не из под админа? Вот http://forum.vvvas.ru/search.php последняя версия, никаких патчей для того что бы не светилось не ставил. И два форума не светятся: один видимый и доступный только определённой группе и другой невидимый и доступный тоже только определённой группе - их нет в списке.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 18 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

VVVas
Не то.
fskon писал(а):Права на форум установлены - везде админ, читать регистрированные (обязательное условие).
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 18 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Нашел у Поручика reindex_mod, вроде то что надо.
Запустил это скрипт по фсем форумам, галочки убраны. Даю ключевое слово закрытого форума и опять видно. Как быть дальше? У Поручика также аналог имеется Disable indexing forum -- или его ставить??
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Палыч
Ну ладно, вот тебе такой форум
Палыч писал(а):везде админ, читать регистрированные
test/test форум называется "Я щас там так хохотался". Гости найти не могут, зарегистрированные конечно же могут найти, потому что могут читать, на главной никто не видит, потому что право "Смотреть" - "Админ". Искть по словам "Проба пера", остальное там не переиндексировано.

Добавлено спустя 7 минут 6 секунд:
fskon писал(а):Disable indexing forum -- или его ставить??
Его если вы хотите, что бы люди не могли находить сообщения из этого форума.

Добавлено спустя 9 минут 11 секунд:

А вообще, собственно, да несуразность.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 18 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

fskon писал(а):Даю ключевое слово закрытого форума и опять видно.
Варианты:
- МОД исключения поставлен некорректно.
- МОД реиндекса поставлен некорректно.
Вариант проверки:
- Очистить вручную таблицы поиска и повторить реиндекс.

Добавлено спустя 7 минут 36 секунд:
VVVas писал(а):Палыч

Ну ладно, вот тебе такой форум
VVVas писал(а):зарегистрированные конечно же могут найти
И что...? Не вкурил... :?
Здесь же речь как раз и идёт, как я понял, о том, чтобы исключить из поиска форум, в котором нестандартные настройки прав доступа.
Вижу - читаю, но не ищу.
У меня, например, когда стоял YC был форум Жалобы, в котором зарегистрированные могли только "Создавать темы" (они его даже не видели, но по кнопке "Пожаловаться" открывалась форма постинга, где страждущий изливал своё фи... и оно сваливалось в Жалобы). Естественно, он тоже был исключен из Поиска.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Вернуться в «Поддержка phpBB 2.0.x»