6 public function connect($connectionIndex, $indexName =
'')
12 $DB = CDatabase::GetModuleConnection(
'search');
14 $DB->Query(
'TRUNCATE TABLE b_search_stem');
15 $DB->Query(
'TRUNCATE TABLE b_search_content_text');
16 $DB->Query(
'TRUNCATE TABLE b_search_content_stem');
21 $DB = CDatabase::GetModuleConnection(
'search');
23 $DB->Query(
'DELETE FROM b_search_content_text WHERE SEARCH_CONTENT_ID = ' .
$ID);
24 $DB->Query(
'DELETE FROM b_search_content_stem WHERE SEARCH_CONTENT_ID = ' .
$ID);
29 $DB = CDatabase::GetModuleConnection(
'search');
32 $dbSites =
$DB->Query(
'SELECT * from b_search_content_site WHERE SEARCH_CONTENT_ID = ' .
$ID);
44 $DB = CDatabase::GetModuleConnection(
'search');
45 $helper =
$DB->getConnection()->getSqlHelper();
47 if (array_key_exists(
'SEARCHABLE_CONTENT',
$arFields))
49 $text_md5 = md5(
$arFields[
'SEARCHABLE_CONTENT']);
50 $rsText =
$DB->Query(
'SELECT SEARCH_CONTENT_MD5 FROM b_search_content_text WHERE SEARCH_CONTENT_ID = ' .
$ID);
51 $arText = $rsText->Fetch();
52 if (!$arText || $arText[
'SEARCH_CONTENT_MD5'] !== $text_md5)
55 $DB->Query(
'DELETE FROM b_search_content_stem WHERE SEARCH_CONTENT_ID = ' .
$ID);
56 if (COption::GetOptionString(
'search',
'agent_stemming') ===
'Y')
65 $merge = $helper->prepareMerge(
'b_search_content_text', [
'SEARCH_CONTENT_ID'], [
66 'SEARCH_CONTENT_ID' =>
$ID,
67 'SEARCH_CONTENT_MD5' => $text_md5,
68 'SEARCHABLE_CONTENT' =>
$arFields[
'SEARCHABLE_CONTENT']
70 'SEARCH_CONTENT_MD5' => $text_md5,
71 'SEARCHABLE_CONTENT' =>
$arFields[
'SEARCHABLE_CONTENT']
73 if ($merge && $merge[0])
75 $DB->Query($merge[0]);
83 $DB = CDatabase::GetModuleConnection(
'search');
87 delete from b_search_content_stem
88 where SEARCH_CONTENT_ID = -' .
$ID
91 insert into b_search_content_stem
92 (SEARCH_CONTENT_ID, LANGUAGE_ID, STEM, TF, PS)
94 (-' .
$ID .
', \'en\', 0, 0, 0)
97 CSearchStemTable::_addAgent();
100 private static function _addAgent()
104 static $bAgentAdded =
false;
108 $rsAgents = CAgent::GetList([
'ID' =>
'DESC'], [
'NAME' =>
'CSearchStemTable::DelayedStemIndex(%']);
109 if (!$rsAgents->Fetch())
111 $res = CAgent::AddAgent(
112 'CSearchStemTable::DelayedStemIndex();',
128 $DB = CDatabase::GetModuleConnection(
'search');
129 $etime = time() + intval(COption::GetOptionString(
'search',
'agent_duration'));
131 $stemQueue =
$DB->Query(
$DB->TopSql(
'
132 SELECT SEARCH_CONTENT_ID ID
133 FROM b_search_content_stem
134 WHERE SEARCH_CONTENT_ID < 0
136 if ($stemTask = $stemQueue->Fetch())
138 $ID = -$stemTask[
'ID'];
141 $rsSite =
$DB->Query(
'
143 FROM b_search_content_site
144 WHERE SEARCH_CONTENT_ID = ' .
$ID .
'
146 while ($arSite = $rsSite->Fetch())
148 $sites[$arSite[
'SITE_ID']] = $arSite[
'URL'];
151 $rsContent =
$DB->Query(
'SELECT SEARCHABLE_CONTENT from b_search_content_text WHERE SEARCH_CONTENT_ID = ' .
$ID);
152 if ($arContent = $rsContent->Fetch())
154 $DB->Query(
'DELETE FROM b_search_content_stem WHERE SEARCH_CONTENT_ID = ' .
$ID);
157 $DB->Query(
'DELETE FROM b_search_content_stem WHERE SEARCH_CONTENT_ID = ' . $stemTask[
'ID']);
164 }
while ($etime >= time());
165 return 'CSearchStemTable::DelayedStemIndex();';
static CleanFreqCache($ID)
static StemIndex($arLID, $ID, $sContent)
connect($connectionIndex, $indexName='')
static DelayStemIndex($ID)
static DelayedStemIndex()
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)