Удалось более конкретно понять суть проблемы. Включил отладчик на обоих серверах и решил сравнить запрос к БД на один и тот же поисковый запрос. В результате выяснилось, что разница в том, что запрос:
Код |
---|
sel ect ID
fr om
b_search_stem
where
STEM='поискова_строка' |
для тестового сервера результат возвращает, в то время как для боевого нет.
Я так понимаю, что таблица b_search_stem имеет какое-то отношение к поисковому кэшу. Не подскажите, каким образом можно её очистить?
Запускал перегенерацию кэша с помощью скрипта:
Код |
---|
<?php
ini_set('mbstring.func_overload', '2');
ini_set('mbstring.internal_encoding', 'UTF-8');
set_time_limit(0);
ignore_user_abort(true);
$_SERVER['DOCUMENT_ROOT'] = '/srv/www/mysite';
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS',true);
define('BX_CRONTAB', true);
define('BX_NO_ACCELERATOR_RESET', true);
define('SITE_ID', 's1');
define('LANG', 'ru');
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
if (!CModule::IncludeModule('search')) {
die('Search module not included');
}
$time_start = time();
$progress = array();
/* $progress['SITE_ID'] = 'ru';
$progress['MODULE_ID'] = 'iblock'; */
$max_execution_time = 10000;
while (is_array($progress)) {
$progress = CSearch::ReIndexAll(true, $max_execution_time, $progress);
}
$total_time = time() - $time_start;
echo 'reindex finished. total time: ' . $total_time . ' seconds, indexed elements: ' . $progress . "\r\n";
?> |
Проблему это не решило.