Sphinx находит не все посты и записи блогов (3.4.6) - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

настройка поиска

  • 2 Страниц +
  • 1
  • 2

Sphinx находит не все посты и записи блогов (3.4.6)

#1 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 04 Сентябрь 2014 - 07:22

Настроил по примеру sphinx.conf, который генерируется через ACP. Заменил лишь параметр с кодировкой sbcs на utf-8. Поиск вроде ищет, но, например, если зайти в общую форму поиска и сделать поиск по автору, а вывод в виде сообщений, то выводятся не все сообщения. Разницу можно наблюдать, если зайти к этому же автору в профиль и кликнуть по "Найти весь контент". Кроме того, не ищет записей в блогах, комментарии.

Техподдержка IPB умыла руки, дескать, Sphinx стороннее ПО и не входит в техподдержку. Непонятно, зачем тогда было официально заявлять поддержку сфинкса и включать его в стандартный функционал.

БД в utf8_general_ci, таблицы в InnoDB. База 2.5 Gb.

Просьба ко всем, кто пользуется поиском Sphinx, проверить данные симптомы у себя. Я сам проверил на паре форумов - ошибка присутствует, но владельцы, видимо, не в курсе. Хочется выяснить, проблема конкретно у меня, или это глобальный косяк скриптов IPB.
0

#2 Пользователь не на сайте   danilka ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 134
  • Регистрация: 10-Март 10
  • Репутация: 6
  • IPB version:2.3.x
 

Отправлено 04 Сентябрь 2014 - 07:34

Нужно конфиги формирования индекса сфинкса смотреть и запросы к апи сфинкса, которые выдергивают айдишки найденных постов из индекса. И да, если у вас критерию поиска соотвествует 2000 постов, а у сфинкса указан лимит выдачи 1000, то он выдаст всего 1000.
0

#3 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 762
  • Регистрация: 20-Март 09
  • Репутация: 2 287
  • IPB version:3.1.x
 

Отправлено 04 Сентябрь 2014 - 07:44

Не все это сколько? Какие сообщения не находятся? Скорее всего да, стоит ограничение как и в стандартном поиске.
0

#4 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 04 Сентябрь 2014 - 13:37

Конфиг совершенно стандартный - тот, что генерируется в админке:
Spoiler


danilka, интересная мысль. Действительно, max_matches = 1000. Попробую увеличить. Может поможет.
А вот с блогами можно поподробнее, как мне это сделать?

siv1987, если я правильно понимаю, при клике по "Найти весь контент" поиск осуществляется без использования сфинкса прямым запросом по id юзера, потому выдает полный и правильный ответ. А если я ищу по нику автора поста, то используется сфинкс.

Сейчас посчитал количество результатов - и вправду ровно 1000.
0

#5 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 762
  • Регистрация: 20-Март 09
  • Репутация: 2 287
  • IPB version:3.1.x
 

Отправлено 04 Сентябрь 2014 - 13:57

И sphinx и SQL поиск имеют методы viewNewContent и viewUserContent. И если выбран сфинкс как поисковой движок, искать должен сфинкс. Не ищет он в новых публикациях если в настройках поиска выбрано "Новые публикации должны использовать только SQL".
viewUserContent еще использует настройку - Ограничить "Темы/Сообщения этого пользователя" результатами за X дней (search_ucontent_days). Хотя она находится в группе сфинкса, используется она также и при SQL поиске (традиционным).
0

#6 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 04 Сентябрь 2014 - 14:48

В админке у меня стоит View New Content: Use SQL Always - Yes. Немножко вводит в заблуждение то, что написано конкретно про View New Content, но, по всей видимости, касается и viewUserContent. Иначе как объяснить разницу в результатах поиска по юзеру.

Limit "My Content" results to X days у меня пусто. Не хочу ограничивать.

Вообще немного нелогично распределены эти настройки в ACP. Правильноее было бы отделить мух от котлет (настройки, касаемые sql-поиска и sphinx) и сделать блок универсальных настроек, касаемых обоих способов.

Поставил max_matches = 20000, переиндексировал. Последние сообщения стали показываться "правильнее", но поиск все равно ограничен 1000 постов. Видимо, ограничения где-то в скриптах.
В блогах по-прежнему пусто.

P.S. Кстати, что-то не доходят на gmail.com уведомления об ответах.

Сообщение изменено: Mac (04 Сентябрь 2014 - 14:48)

0

#7 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 762
  • Регистрация: 20-Март 09
  • Репутация: 2 287
  • IPB version:3.1.x
 

Отправлено 04 Сентябрь 2014 - 14:59

Можно объяснить тем, что в одном случае используется обычный метод поиска, в другом метод viewUserContent (хотя из ограничений там только search_ucontent_days).

Лимиты у сфинкса есть в /admin/applications/forums/extensions/search/engines/sphinx.php
return array( 'count' => intval( $result['total_found'] ) > 1000 ? 1000 : $result['total_found'], 'resultSet' => $search_ids );

Для традиционного поиска в /admin/applications/forums/extensions/search/engines/sql.php
0

#8 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 04 Сентябрь 2014 - 16:13

Изменил лимиты в коде. Появился баг: когда делаю поиск по нику юзера, ссылка перехода на последнюю страницу результатов кидает на первую страницу.

Опытным путем обнаружил, что пагинация действительно доходит до 40 страницы, а при попытке попасть на 41-ю, кидает на первую.
1

#9 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 05 Сентябрь 2014 - 05:10

Залез в БД, в таблице ipb_core_sys_conf_settings изменил опцию search_hardlimit, добавив две доп. строчки:
100=100
200=200
300=300
400=400
500=500
1000=1000
10000=10000
20000=20000

В настройках выставил 20000. Также в настройках указал лимит в днях на 10 лет. Изменилась только надпись в результатах поиска:

Цитата

(Поиск ограничен от 07-Сентябрь 04)

Но на 41 страницу по-прежнему не переходит.

Про изменение лимитов в БД подглядел на другом форуме (да простят меня админы за ссылку). Странно, что там человеку это помогло (правда, он юзал обычный поиск).
0

#10 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 762
  • Регистрация: 20-Март 09
  • Репутация: 2 287
  • IPB version:3.1.x
 

Отправлено 05 Сентябрь 2014 - 15:35

search_hardlimit (Ограничить результаты поиска по темам и сообщениям) используется только для SQL поиска.

		/* Hard limit - not used in Sphinx but may need to revisit if we bust IN()s */
		//IPSSearchRegistry::set('set.hardLimit', ( ipsRegistry::$settings['search_hardlimit'] ) ? ipsRegistry::$settings['search_hardlimit'] : 200 );

Трудно вслепую что-то подсказать, не зная даже где происходит этот редирект. Сфинксом к сожалению не пользуемся.

 Mac сказал(а):

Залез в БД, в таблице ipb_core_sys_conf_settings изменил опцию search_hardlimit, добавив две доп. строчки:

Или SQL запросом:

UPDATE core_sys_conf_settings SET conf_extra="100=100
200=200
300=300
400=400
500=500
1000=1000
2000=2000
3000=3000
4000=4000
5000=5000
10000=10000
15000=15000
20000=20000"
WHERE conf_key='search_hardlimit'

0

#11 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 762
  • Регистрация: 20-Март 09
  • Репутация: 2 287
  • IPB version:3.1.x
 

Отправлено 05 Сентябрь 2014 - 21:30

А попробуйте отредактировать значение для $this->_maxmatches в ./sphinxapi.php
Либо установить его из настроек поиска форума (search_hardlimit) в /admin/applications/forums/extensions/search/engines/sphinx.php
После
		parent::__construct( $registry );

Добавив

		$this->sphinxClient->SetLimits( 0, 1000, $this->settings['search_hardlimit'] );

1

#12 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 06 Сентябрь 2014 - 05:50

Вроде я уже пытался менять это значение, но не помогало. Видимо, это надо было делать в связке с предложенными выше изменениями кода движка. Сейчас увеличил $this->_maxmatches в ./sphinxapi.php с 1000 до 20000 - наконец-то стало кидать на последнюю страницу. Правда, остальные результаты по-прежнему неадекватные: первыми идут два поста за сегодня, а следом за 29 августа. Т.е. посты за последнюю неделю куда-то пропали из хронологии, да и дальше идут результаты с большими пробелами.

Вообще очень по-дурацки сделана даже сортировка результатов - можно отсортировать результаты только по дате последнего обновления, но не по дате создания. А сортировки по имени, просмотрам, ответам - нафига это вообще нужно? 10 лет занимаюсь форумами, и вот ни разу не возникало необходимости сортировки по этим полям. Вообще чем больше копаюсь в IPB, тем меньше понимаю, как эти ребята с их напрочь потерянной логикой вообще смотгли создать такой известный продукт. По уровню логичности тот же старый phpBB выше на голову.

Добавлено позже

Вроде догнал наконец эту больную логику. Дело в том, что при поиске по имени автора результаты сортируются по дате последнего обновления в той теме, где этот юзер написал. Это ж надо было догадаться до такого! Т.е. если у вас на форуме есть огромная регулярно обновляемая тема (например, какие-нибудь "Мысли вслух"), где искомый юзер хотя бы раз отписался, то этот его пост будет постоянно маячить наверху результатов поиска, даже если пост был написал много лет назад, как ты ни сортируй. А если этот человек написал там не один пост, то все эти посты забьют все первые строчки результатов поиска. Сортировка указана "По дате последнего обновления".

Прикол в том, что если искать через профиль "Найти контент", то несмотря на тот же тип сортировки "По дате последнего обновления" результаты будут отсортированы по дате создания поста. ТП напрочь стоит на своем, дескать, все правильно, и так было задумано.

Очень интересует вопрос, как можно нафиг выпилить из движка эту идиотскую функцию сортировки по дате последнего обновления, и добавить вместо него сортировку по дате создания?

Кстати, вот еще прикол:

-IMG-

У меня форум с 2007 года, и этот год здесь выбрать невозможно, зато из 2020 пожалуйста. Я, конечно, понимаю, что можно и вручную вписать, но нафига такой недоделанный datepicker было вообще добавлять.

Сообщение изменено: Mac (06 Сентябрь 2014 - 05:52)

0

#13 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 762
  • Регистрация: 20-Март 09
  • Репутация: 2 287
  • IPB version:3.1.x
 

Отправлено 06 Сентябрь 2014 - 07:25

Цитата

По уровню логичности тот же старый phpBB выше на голову.

По своему уровню старый phpbb унылое гавно, потому что кроме одной функции там ничего другого нету. Говорить об "логичности" в данном случае довольно затруднительно в ввиду отсутствия равномерного с ИПБ функционала. Чем крупнее проект тем сложнее логика, ну и конечно, обязательно найдется кто-то у которого она не совпадает с его представлениями о логичности, это неизбежно.

Цитата

Вроде догнал наконец эту больную логику.

Темы могут сортироватся либо по дате последнего сообщения в них, либо по дате искомого поста. Если сортировать по дате последнего сообщения темы, результат будет составлять из часто обновляемых тем. Если сортировать по дате поста, темы будут перемешены из-за разницы в дате между последним сообщением и опять будут кричать что находятся не все темы. Старая тема http://ipbskins.ru/f.../topic6990.html
0

#14 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 06 Сентябрь 2014 - 11:04

Цитата

либо по дате последнего сообщения в них, либо по дате искомого поста
А это где? У меня только по дате последнего обновления (в теме, по всей видимости).

Вложение  сортировка.png (21,93К)
Количество загрузок: 3
0

#15 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 43
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 08 Сентябрь 2014 - 06:29

Наконец-то удалось решить проблему разницы в сортировке при поиске по постам юзера из профиля и из общей формы поиска. В файле /admin/applications/forums/extensions/search/engines/sphinx.php находим:
/* Sorting */
switch( $sort_by )
{
	default:
	case 'date':
		$sortKey     = 'last_post';
		$sortKeyPost = 'post_date';

и последние две строчки заменяем на
$sortKeyPost = $sortKey = 'post_date';

Теперь сортировка результатов поиска будет по дате создания поста, а не по дате последнего сообщения в теме, где этот пост находится.

Осталась последняя проблема с поиском по блогам, который через Sphinx не работает вообще. Подскажите, где копать?
0

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна