Рейтинг: 4.8313  
На голосовании
Предложил Казаков Олег 22.12.2015 14:00:02

CIBlockElement::GetList добавить возможность сортировки по релевантности

Есть компонент catalog search, который состоит из двух компонентов:
catalog page и catalog section.
Логика у него простая, результат catalog page передаётся в catalog section, который и выводит на страницу.
catalog page может сортировать по релевантности, но проблема в том, что catalog section применяет свою сортировку, а сортировки по релевантности он не имеет из-за того, что её не поддерживает CIBlockElement::GetList.  
Рейтинг: 42.864  
Внедрено
Предложил Плотников Александр 11.08.2014 11:55:30

Релевантный поиск по каталогу. Компонент catalog.search

Сейчас нет возможности получить релевантный результат поиска по каталогу, если использовать компонент catalog.search. Т.е. пользователь при поиске по запросу "Мясо" может получит несколько страниц с товарами, где есть в описание слова "Мясо", а потом уж сам товар с название "Мясо".

Почему так происходит?
 Своей особой логики по сути у компонента  catalog.search в файле component.php нету. Шаблон компонент состоит из search.page в связке с catalog.section. search.page формирует массив $arElements состоящий из ID элементов отсортированных по релевантности и передает в catalog.section.

Проблема состоит в том, что catalog.section сортирует массив данных по своим правилам из параметров ELEMENT_SORT_FIELD и ELEMENT_SORT_FIELD2, где исходная сортировка не учитывается. Корректная сортировка  данных в result_modifier.php возможно только, когда нету разбиения на страницы данных.

Если посмотреть компонент catalog.section, то он основан на CIBlockElement::GetList функции.

Чтобы решить проблему нужно добавить в новый тип сортировки (на пример default)  в функции CIBlockElement::GetList, чтобы получить релевантный поиск, т.е. чтобы входной массив ID элементов и задав сортировку элементов.
Или переработать этот компонент, чтобы была возможность получить релевантные данные поиска.
Рейтинг: 0  
Ответил Жуков Евгений 23.07.2019 15:42:55
Выйдет в iblock 19.0.0. Возможен сдвиг обновления.