При разработке сайта планируется создать собственный компонент, который будет отображать контент по типу каталога книг в демо-сайте. Выборка информации будет осуществляться из другой БД, не БД сайта. Вопрос: как настроить модуль поиска для того, чтобы контент компонента индексировался и поиск по сайту работал.
Нашел подобный топик по php версии. Там советуют использовать событие OnReIndex. Можно ли подобное реализовать на ASP.NET версии. P.S. Очень не хватает полной документации.
Тогда вы должны вызывать в коде индексацию контента при его добавлении, изменении или удалении. Модуль поиска поддерживает следующие команды (посредством BXCommand)
Цитата
Bitrix.Search.IndexContent - индексация и обновление элемента
В продолжении темы индексации контента из сторонней БД. Я создал класс MyClass, пометил его аттрибутом [BXMessageReceiver]. Для перехвата события Bitrix.Search.IndexAll я использую статический метод void ReIndex(BXCommand command). При полной переиндексации я проверял - метод отрабатывает. Но поиск не работает. Мои наблюдения. В БД битрикса в таблице b_Search_Content(в которой как я понял содержится индексированный контент) появляются строки с моим индексированным контентом. Но в таблице b_Search_ContentStemIndex, b_Search_ContentSites новые строки не появляются.
List<String> sites = new List<string>();
sites.Add(BXSite.GetDefaultSite().Id);
command.Parameters.Add("sites", sites);
Т.е. параметр sites принимает список со строками - id сайта, а я передавал экземляр класса BXSite. После этого изменения все заработало. Спасибо за помощь.
Снова проблемы с индексацией. Сама разработка велась на 1С-Битрикс: Управление сайтом ASP.NET 4.5.0, на боевом сайте стоит 1С-Битрикс: Управление сайтом ASP.NET 4.6.0. Код который работает под 4.5 не работает на 4.6. Конкретно: контент не индексируется, не заполняется таблица b_Search_Content, ну и остальные таблицы тоже. Я заполняю следующие параметры для BXCommand. body contentDate moduleId - mymodule itemGroup itemId param1 sites tags Для параметра moduleId я ставлю произвольную строку, которая не соответствует названию реального модуля. У меня есть подозрения что это из-за параметра moduleId. Что-то можете посоветовать?