Поиск Bitrix и переиндексация. Почему некорректно отрабатывают?
Добрый день! Столкнулась с проблемой, которая возникает после выгрузки товаров из 1с. Товары не индексируются, и только если я захожу с товар и нажимаю применить, при этом ничего не меняя в самом товаре, только тогда он появляется в результатах поиска.
После следующей выгрузки 1с ситуация повторяется. Переиндексация вручную в настройках поиска затрагивает только часть товаров, но не все.
Подскажите, что можно сделать в данной ситуации?
P.S. пока размышляю в сторону CIBlockElement::UpdateSearch после обновления элемента. Будет ли это работать или есть уже какие-то существующие решения получше?
Ярослав Александров, Еще интересный момент, что стандартный поиск как-то странно ищет. Он может искать по 'ш' 'шка' и найти товар шкаф, но 'шк' и собственно 'шкаф' не находят ничего. Это как-то с морфологией связано?
Антон, К сожалению, гугл мне ничего не принес, хотя я ему посвятила всю ночь. Те решения, которые там предлагались не отработали. Я стараюсь не просить о помощи и не отвлекать людей, если проблему можно решить через гугл и пишу сюда только в крайнем случае, когда сама не смогла найти решение и нужна помощь более опытных коллег
Со шкафами по итогу разобралась сама.
Проблема была в CSearchLanguage::GuessLanguage. Некорректно обрабатывал слова. Отменила эту проверку и все пошло как по маслу, но проблема индексации не решена
Анна, при выгрузке - файл /bitrix/modules/iblock/classes/general/cml2.php класс CIBlockCMLImport вызывается метод ImportElement, в нем вызывается или CIBlockElement::Add или CIBlockElement::Update. Что при добавлении, что при обновлении элемента вызывается CIBlockElement::UpdateSearch. Видимо проблема в самом импорте, скорее всего сам элемент не обновляется, иначе бы вызвался CIBlockElement::UpdateSearch, он кстати вызывает CSearch::Index, можно попробовать логирование на событиях поиска
Попробуйте в настройках импорта поискать опцию связанную с проверками контрольных сумм, если она отмечена - то элемент сначала проверяться будет, а изменяться только в случае отличия от импортируемого.