Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Требуется правильно сделать поиск.

Есть 5 таблиц.

1. subsections - таблица категорий. Структура ID, NAME

2. brands - таблица брендов (например, Apple, Nokia). Структура: ID, NAME, ID_SUBSECTIONS (это ID категории)

3. goods - таблица товаров (например, Apple iPhone 5). Структура: ID, NAME, BRAND_ID (это ID бренда), subsection_id (это ID категории)

4. brands_alternative - таблица с альтернативными названиями бренда. Например: Aple, Эппл. Т.е. данная таблица содержит варианты названий реального бренда. Стуктура: ID, NAME, BRAND_ID.

5. subsections_alternative - таблица с альтернативными названиями категории. Например, для категории "Сотовые телефоны" можно привязать названия "Мобильный телефоны", "Смартфоны". Т.е. данная таблица содержит варианты названий реальной категории. Стуктура: ID, NAME, SUBSECTION_ID.

Допустим человек ищет фразу "телефон Aple iphone 5s"

Нужно вывести результаты в следующем порядке.

1. Если слово из искомой фразы встретилось в названии категории (subsections) или в названии альтернативной категории (subsections_alternative), то сначала вывести список категорий.

2. Если слово из искомой фразы содержится в названии товара (goods) и названии бренда (brands) или альтернативы бренда (brands_alternative), то вывести список таких товаров.

3. Если слово из искомой фразы содержится просто в названии товара (goods), то вывести товары.

4. Если слово из искомой фразы содержится просто в названии бренда (brands) или в его альтернативном названии (brands_alternative), то вывести товары с этим брендом.

Важно, чтобы приоритет вывода был согласно списку 4х пунктов Выше, т.е. самый приоритетный вариант - 1, затем 2, потом 3 и 4.

Нужно также выводить товары из пунктов 2-4 так, чтобы они не повторялись. Т.е. если товар нашелся по пункту 2, то понятно, что он найдется и в пункте 3 или 4, но повторно в результат поиска его вносить не надо.

Готов оплатить работу.

11 лет назад
igramnet
36 летБеларусь
16 лет в сервисе
Был
5 лет назад