Корректировка ранжирования результатов 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. Хотелось бы обсудить и, может быть, Василий примет решение выпустить новую версию :-)
Алексей Шумаев
03 марта 2016, 08:13
modx.pro
10
2 036
+5
Поблагодарить автора Отправить деньги

Комментарии: 4

Алексей Шумаев
03 марта 2016, 13:51
1
+3
Добавлю изображение, наглядно поясняющее, как можно было бы использовать наличие возможности сортировки по типу ресурса или, что ещё лучше — разбитие выдачи поиска по типу ресурса/шаблону/...:


Аналогично для полного поиска.
    but1head
    04 марта 2016, 03:27
    0
    Очень крутой поиск, есть код или же просто дизайн?
      Алексей Шумаев
      04 марта 2016, 10:28
      0
      Пока дизайн.
      Код после праздников будет ибо хочу это реализовать, подумаю на досуге.
      НО. Весьма вероятно, что это будет кастомизация, закрывающая возможность обновления компонента. Опять же — я не профессиональный разработчик, качества не гарантирую ;-)

      Здесь пример кода, частично реализующего нужный функционал.

      Поэтому, если сообществу нужен такой функционал, то правильнее — попросить Василия о новой версии mSearch2 или даже отдельном продукте на базе mSearch2…
      Соответственно, чтобы понять, надо оно или нет — те кому надо — «лайкаем» тему.
    Алексей Шумаев
    10 июля 2016, 03:04
    0
    В работе: сайт.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4