yous
@yous

Bitrix компонент поиска, замена вводимых слов?

Подскажите, как реализовать замену вводимых слов, фраз от пользователя на нужные слова, фразы?

например покупатель вводит в поисковую строку "изоляция", но на сайте нет таких товаров или разделов, но есть "теплоизоляция", да бы не выдавать пустой результат можно покупателя направить на эти товары или раздел.
Или покупатель просто ошибся в фирме, названии товара, т.е. ввел с ошибкой например "керпич", а мы его исправляем на
"к?рпич" используя регулярные выражения.

есть ли стандартные решения?
и как лучше это реализовать, с постоянным наполнением базы таких слов,фраз - замен.
можно ли добавить regexp для этих целей?
  • Вопрос задан
  • 979 просмотров
Пригласить эксперта
Ответы на вопрос 1
@iitovka
1) Либо компонент кастомизировать, и перед выборкой getlist добавлять в свои дополнительные параметры в фильтр, либо в шаблоне компонента, если результат пуст, то снова подключать компонент со своим фильтре, в зависимости от поисковой фразы. лучше 1, т.к. так все сразу будет найдено.
2) для керпич/кирпич использую сервис от яндекса - https://tech.yandex.ru/speller/
т.к. я кастомизировала компонент, то просто поисковый запрос проверяю и добавляю в фильтр через LOGIC->OR.
код запроса

function yaapi($url, $params) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURLOPT_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$result = json_decode(yaapi('speller.yandex.net/services/spellservice.json/checkText', array('text'=>$arrFilter['?NAME'])), true);
$arrFilter['?NAME'] - поисковый запрос пользователя
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы