IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/options.php"); IncludeModuleLangFile(__FILE__); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/search/prolog.php"); /** @global CMain $APPLICATION */ global $APPLICATION; /** @var CAdminMessage $message */ $bVarsFromForm = false; $aTabs = array( 0 => array( "DIV" => "index", "TAB" => GetMessage("SEARCH_OPTIONS_TAB_INDEX"), "ICON" => "search_settings", "TITLE" => GetMessage("SEARCH_OPTIONS_TAB_TITLE_INDEX_2"), "OPTIONS" => Array( "max_file_size" => Array(GetMessage("SEARCH_OPTIONS_REINDEX_MAX_SIZE"), Array("text", 6)), "include_mask" => Array(GetMessage("SEARCH_OPTIONS_MASK_INC"), Array("text", 60)), "exclude_mask" => Array(GetMessage("SEARCH_OPTIONS_MASK_EXC"), Array("textarea", 5)), "page_tag_property" => Array(GetMessage("SEARCH_OPTIONS_PAGE_PROPERTY"), Array("text", "tags")), ) ), 1 => array( "DIV" => "stemming", "TAB" => GetMessage("SEARCH_OPTIONS_TAB_STEMMING"), "ICON" => "search_settings", "TITLE" => GetMessage("SEARCH_OPTIONS_TAB_TITLE_STEMMING"), "OPTIONS" => Array( "use_stemming" => Array(GetMessage("SEARCH_OPTIONS_USE_STEMMING"), Array("checkbox", "N")), "agent_stemming" => Array(GetMessage("SEARCH_OPTIONS_AGENT_STEMMING"), Array("checkbox", "N")), "agent_duration" => Array(GetMessage("SEARCH_OPTIONS_AGENT_DURATION"), Array("text", 6)), "full_text_engine" => Array(GetMessage("SEARCH_OPTIONS_FULL_TEXT_ENGINE"), Array("select", array( "bitrix" => GetMessage("SEARCH_OPTIONS_FULL_TEXT_ENGINE_BITRIX"), "sphinx" => GetMessage("SEARCH_OPTIONS_FULL_TEXT_ENGINE_SPHINX"), ))), "letters" => Array(GetMessage("SEARCH_OPTIONS_LETTERS"), Array("text", 45), "bitrix"), "sphinx_connection" => Array(GetMessage("SEARCH_OPTIONS_SPHINX_CONNECTION"), Array("text", 45), "sphinx"), "sphinx_index_name" => Array(GetMessage("SEARCH_OPTIONS_SPHINX_INDEX_NAME"), Array("text", 45), "sphinx"), "sphinx_note" => Array("", Array("note", "
#sphinx.conf
index bitrix
{
#main settings
type = rt
path = /var/lib/sphinxsearch/data/bitrix
docinfo = inline
#choose appropriate type of morphology to use
#morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, stem_enru
morphology = stem_enru, soundex
#these settings are used by bitrix:search.title component
dict = keywords
prefix_fields = title
infix_fields=
min_prefix_len = 2
enable_star = 1
#all fields must be defined exactly as followed
rt_field = title
rt_field = body
rt_attr_uint = module_id
rt_attr_string = module
rt_attr_uint = item_id
rt_attr_string = item
rt_attr_uint = param1_id
rt_attr_string = param1
rt_attr_uint = param2_id
rt_attr_string = param2
rt_attr_timestamp = date_change
rt_attr_timestamp = date_to
rt_attr_timestamp = date_from
rt_attr_uint = custom_rank
rt_attr_multi = tags
rt_attr_multi = right
rt_attr_multi = site
rt_attr_multi = param
#depends on settings of your site
# uncomment for single byte character set
charset_type = sbcs
# uncomment for UTF character set
#charset_type = utf-8
}
"), "sphinx"),
"mysql_note" => Array("", Array("note", GetMessage("SEARCH_OPTIONS_MYSQL_NOTE")), "mysql"),
)
),
2 => array(
"DIV" => "search",
"TAB" => GetMessage("SEARCH_OPTIONS_TAB_SEARCH"),
"ICON" => "search_settings",
"TITLE" => GetMessage("SEARCH_OPTIONS_TAB_TITLE_SEARCH"),
"OPTIONS" => Array(
"max_result_size" => Array(GetMessage("SEARCH_OPTIONS_MAX_RESULT_SIZE"), Array("text", 6)),
"max_body_size" => Array(GetMessage("SEARCH_OPTIONS_MAX_BODY_SIZE"), Array("text", 6)),
"use_tf_cache" => Array(GetMessage("SEARCH_OPTIONS_USE_TF_CACHE"), Array("checkbox", "N")),
"use_word_distance" => Array(
GetMessage("SEARCH_OPTIONS_USE_WORD_DISTANCE"),
Array("checkbox", "N"),
"disabled" => BX_SEARCH_VERSION > 1? "": GetMessage("SEARCH_OPTIONS_REINSTALL_MODULE"),
),
"use_social_rating" => Array(
GetMessage("SEARCH_OPTIONS_USE_SOCIAL_RATING"),
Array("checkbox", "N"),
"disabled" => BX_SEARCH_VERSION > 1? "": GetMessage("SEARCH_OPTIONS_REINSTALL_MODULE"),
),
"suggest_save_days" => Array(GetMessage("SEARCH_OPTIONS_SUGGEST_SAVE_DAYS"), Array("text", 6)),
)
),
3 => array(
"DIV" => "statistic",
"TAB" => GetMessage("SEARCH_OPTIONS_TAB_STATISTIC"),
"ICON" => "search_settings",
"TITLE" => GetMessage("SEARCH_OPTIONS_TAB_TITLE_STATISTIC"),
"OPTIONS" => Array(
"stat_phrase" => Array(GetMessage("SEARCH_OPTIONS_STAT_PHRASE"), Array("checkbox", "Y")),
"stat_phrase_save_days" => Array(GetMessage("SEARCH_OPTIONS_STAT_PHRASE_SAVE_DAYS"), Array("text", 6)),
)
),
);
$DBsearch = CDatabase::GetModuleConnection('search');
if ($DBsearch->type === 'MYSQL')
{
$aTabs[1]['OPTIONS']['full_text_engine'][1][1]['mysql'] = GetMessage("SEARCH_OPTIONS_FULL_TEXT_ENGINE_MYSQL");
}
$tabControl = new CAdminTabControl("tabControl", $aTabs);
if($REQUEST_METHOD=="POST" && $Update.$Apply.$RestoreDefaults <> '' && check_bitrix_sessid())
{
if($RestoreDefaults <> '')
{
COption::RemoveOption("search");
}
else
{
if ($_POST["full_text_engine"] === "sphinx")
{
$search = new CSearchSphinx();
if (!$search->connect($_POST["sphinx_connection"], $_POST["sphinx_index_name"], true))
{
$e = $APPLICATION->GetException();
if(is_object($e))
$message = new CAdminMessage(GetMessage("SEARCH_OPTIONS_SPHINX_ERROR"), $e);
$bVarsFromForm = true;
}
}
elseif ($_POST["full_text_engine"] === "mysql")
{
$search = new CSearchMysql();
if (!$search->connect())
{
$e = $APPLICATION->GetException();
if(is_object($e))
$message = new CAdminMessage(GetMessage("SEARCH_OPTIONS_MYSQL_ERROR"), $e);
$bVarsFromForm = true;
}
}
if (!$bVarsFromForm)
{
$old_use_tf_cache = COption::GetOptionString("search", "use_tf_cache");
$old_max_result_size = COption::GetOptionInt("search", "max_result_size");
$old_full_text_engine = COption::GetOptionString("search", "full_text_engine");
foreach($aTabs as $i => $aTab)
{
foreach($aTab["OPTIONS"] as $name => $arOption)
{
$disabled = array_key_exists("disabled", $arOption)? $arOption["disabled"]: "";
if($disabled)
continue;
$val = $_POST[$name];
if($arOption[1][0]=="checkbox" && $val!="Y")
$val="N";
COption::SetOptionString("search", $name, $val, $arOption[0]);
}
}
if (
$old_use_tf_cache != COption::GetOptionString("search", "use_tf_cache")
|| $old_max_result_size != COption::GetOptionInt("search", "max_result_size")
)
{
$DBsearch->Query("TRUNCATE TABLE b_search_content_freq");
}
if ($old_full_text_engine != COption::GetOptionString("search", "full_text_engine"))
{
COption::SetOptionString("search", "full_reindex_required", "Y");
}
}
}
CSearchStatistic::SetActive(COption::GetOptionString("search", "stat_phrase")=="Y");
if (!$bVarsFromForm)
{
if($Update <> '' && $_REQUEST["back_url_settings"] <> '')
LocalRedirect($_REQUEST["back_url_settings"]);
else
LocalRedirect($APPLICATION->GetCurPage()."?mid=".urlencode($mid)."&lang=".urlencode(LANGUAGE_ID)."&back_url_settings=".urlencode($_REQUEST["back_url_settings"])."&".$tabControl->ActiveTabParam());
}
}
if(is_object($message))
echo $message->Show();
$aMenu = array(
array(
"TEXT"=>GetMessage("SEARCH_OPTIONS_REINDEX"),
"LINK"=>"search_reindex.php?lang=".LANGUAGE_ID,
"TITLE"=>GetMessage("SEARCH_OPTIONS_REINDEX_TITLE"),
),
array(
"TEXT"=>GetMessage("SEARCH_OPTIONS_SITEMAP"),
"LINK"=>"search_sitemap.php?lang=".LANGUAGE_ID,
"TITLE"=>GetMessage("SEARCH_OPTIONS_SITEMAP_TITLE"),
)
);
$context = new CAdminContextMenu($aMenu);
$context->Show();
$tabControl->Begin();
?>