Добрый день,
разрабатываем интернет-магазин офисных товаров, сейчас работаем над ajax-поиском (предложение вариантов до нажатия кнопки Найти). Нужно, чтобы отображались товары, содержащие искомое слово, но во-первых, применялась морфология, а во-вторых, при отображении результатов применялось ранжирование в зависимости от поля, в котором найден товар и популярности/важности товара.
Сейчас при поиске «бумага», первым появляется один из товаров, в описании (а не в названии) которого есть это слово, а самый популярный товар, у которого искомое слово стоит первым в названии, находится в середине. Приоритет в результатах поиска должен быть примерно таким (по полям, в которых оно найдено):
1. Код товара
2. Артикул товара
3. Название товара
4. Ключевые слова и их синонимы
5. Описание
6. Детали товара (в таблице) – для сужения результатов по размеру (например, стержень 135 мм)
7. Цвет – для сужения результатов по цвету (например, стержень 135 мм синий)
8. Производитель
9. Популярность товара
Еще бы не плохо при ранжировании учитывать, если в названии слово находится в начале, например, при поиске по слову «принт» — "Принтер Canon..." должен появляться раньше, чем "Картридж для матричных принтеров", т.к. слово в строке находится раньше.
Также должен осуществляться морфологический поиск, т.к. зачастую клиент ищет не "ручка", а "ручки", но при включении морфологии при вводе слова "кальк" находится "калька", а "калькуляторы" не находятся. Т.е. морфологический поиск должен осуществляться, но его рейтинг должен быть ниже, чем рейтинг результатов "прямого" поиска.
Как это все реализовать средствами Битрикса?