ReindexModule
Описание и параметры
void
CSearch::ReindexModule( string MODULE_ID, bool bFull = false );
Метод инициирует переиндексацию указанного модуля. Для того, чтобы модуль был переиндексирован, он должен предоставить соответствующий метод, который должен быть зарегистрирован в системе событий как обработчик события OnReIndex модуля "search". Метод статический.
С помощью этого метода невозможно переиндексировать данные модуля "main". Т.к. индексация файлов выполняется не через обработчики событий, а непосредственно модулем поиска. Но можно воспользоваться методом CSearch::ReIndexAll, передав на первом шаге $NS = array("MODULE_ID"=>"main").
Примечание: метод использует внутреннюю транзакцию. Если у вас используется MySQL и InnoDB, и ранее была открыта транзакция, то ее необходимо закрыть до подключения метода.
Параметры метода
Параметр | Описание |
---|---|
MODULE_ID | Код модуля, переиндексация которого требуется. |
bFull | Производить ли полную переиндексацию с очисткой старых поисковых индексов. Не обязательный параметр, по умолчанию равен false. |
Смотрите также
Примеры использования
OnReindex.
// регистрируем обработчик события "OnReindex" модуля "search"
RegisterModuleDependences("search", "OnReindex", "my_module", "CMyModule", "OnReindex");
// создаем в модуле my_module в классе CMyModule метод OnReindex
function OnReindex()
{
global $DB;
$arResult = array();
$strSql =
"SELECT FT.ID, FT.TITLE, FT.MESSAGE, ".
" DATE_FORMAT(FT.POST_DATE, '%d.%m.%Y %H:%i:%s') as POST_DATE, FT.LID ".
"FROM b_my_table FT ";
$db_res = $DB->Query($strSql);
while ($res = $db_res->Fetch())
{
$arResult[] = array(
"ID" => $res["ID"],
"LID" => $res["LID"],
"DATE_CHANGE" => $res["POST_DATE"],
"URL" => "/my_module/index.php?ID=".$res["ID"],
"PERMISSIONS" => array(2),
"TITLE" => $res["TITLE"],
"BODY" => $res["POST_MESSAGE"]
);
}
return $arResult;
}
// вызываем переиндексацию модуля
CSearch::ReIndexModule("my_module");
?>
© «Битрикс», 2001-2024, «1С-Битрикс», 2024