Корректировка ранжирования результатов mSearch2
Доброго дня!
Столкнулся с необходимостью скорректировать выдачу поиска, а именно: если в запросе имеется основная словоформа — необходимо повышать её вес.
Например, запрос «канва». Сначала выдаётся список синонимов типа «рисунок на канве» и только на n-ной странице собственно «канва белая» и т.п. Нас это не устраивает, поэтому внесли небольшие правки в скрипт индексации mSearch2 — дополнительно условие в файле create.class.php, функция _getBaseForms
Получается, если добавить системный параметр с указанием индекса коррекции веса, можно регулировать и выдачу в зависимости от того, есть ли в запросе базовая словоформа.
Аналогично можно поступить с учётом класса или шаблона ресурса. Например, нам может быть нужно, чтобы впереди всегда шли найденные товарные разделы или новости или специальные предложения, а потом всё остальное.
В чём, собственно, смысл этого микроскопического «готового решения» — мне кажется подобные настройки порядка выдачи нужны в штатном функционале mSearch2. Хотелось бы обсудить и, может быть, Василий примет решение выпустить новую версию :-)
Столкнулся с необходимостью скорректировать выдачу поиска, а именно: если в запросе имеется основная словоформа — необходимо повышать её вес.
Например, запрос «канва». Сначала выдаётся список синонимов типа «рисунок на канве» и только на n-ной странице собственно «канва белая» и т.п. Нас это не устраивает, поэтому внесли небольшие правки в скрипт индексации mSearch2 — дополнительно условие в файле create.class.php, функция _getBaseForms
if (preg_match('/^[0-9]{2,}$/', $form) || mb_strlen($form,'UTF-8') >= $this->mSearch2->config['min_word_length']) {
#корректировка
if($word == $form) {
$count = $count + 10;
}
#
if (!isset($base_forms[$form])) {
$base_forms[$form] = $count;
}
else {
$base_forms[$form] += $count;
}
}
Теперь при наличии прямого вхождения словоформы в индекс, вес ресурса будет на n больше.Получается, если добавить системный параметр с указанием индекса коррекции веса, можно регулировать и выдачу в зависимости от того, есть ли в запросе базовая словоформа.
Аналогично можно поступить с учётом класса или шаблона ресурса. Например, нам может быть нужно, чтобы впереди всегда шли найденные товарные разделы или новости или специальные предложения, а потом всё остальное.
В чём, собственно, смысл этого микроскопического «готового решения» — мне кажется подобные настройки порядка выдачи нужны в штатном функционале mSearch2. Хотелось бы обсудить и, может быть, Василий примет решение выпустить новую версию :-)
Поблагодарить автора
Отправить деньги
Комментарии: 4
Добавлю изображение, наглядно поясняющее, как можно было бы использовать наличие возможности сортировки по типу ресурса или, что ещё лучше — разбитие выдачи поиска по типу ресурса/шаблону/...:
Аналогично для полного поиска.
Аналогично для полного поиска.
Очень крутой поиск, есть код или же просто дизайн?
Пока дизайн.
Код после праздников будет ибо хочу это реализовать, подумаю на досуге.
НО. Весьма вероятно, что это будет кастомизация, закрывающая возможность обновления компонента. Опять же — я не профессиональный разработчик, качества не гарантирую ;-)
Здесь пример кода, частично реализующего нужный функционал.
Поэтому, если сообществу нужен такой функционал, то правильнее — попросить Василия о новой версии mSearch2 или даже отдельном продукте на базе mSearch2…
Соответственно, чтобы понять, надо оно или нет — те кому надо — «лайкаем» тему.
Код после праздников будет ибо хочу это реализовать, подумаю на досуге.
НО. Весьма вероятно, что это будет кастомизация, закрывающая возможность обновления компонента. Опять же — я не профессиональный разработчик, качества не гарантирую ;-)
Здесь пример кода, частично реализующего нужный функционал.
Поэтому, если сообществу нужен такой функционал, то правильнее — попросить Василия о новой версии mSearch2 или даже отдельном продукте на базе mSearch2…
Соответственно, чтобы понять, надо оно или нет — те кому надо — «лайкаем» тему.
В работе: сайт.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.