Здравствуйте, долго ничего не писал и друг решил написать скрипт, верней переписать.
Время дало о себе знать сразу... было много ошибок и т.д., но самое сложно оказалось связь с базой данных.
Для реализации поиска по индексам, я решил хранить данные в разных таблицах.
Пример таблиц:
1. category - id, name
2. inner_category - id, id_category, name
3. public_info - id, id_inner_category, title
4. keywords - id, key
5. bind_category - id, id_category, id_key
6. bind_inner_category - id, id_inner_category, id_key
7. bind_public_info - id, id_public_info, id_key
* где зеленое - это уникальные значения и повторяться они не могут, попарно.
Как я понимаю, при попытке записать данные, мне придется сделать следующее:
1. Отослать запрос для проверки существования Категории, Подкатегории, Публикации
1.1 Если отсутствую записи о Категории или Подкатегории, то:
1.1.2 Записываем данные о Категории или Подкатегории (ну или то и другое)
1.2 Проверяем Существуют ли данные о связи Публикации и ключевых слов, если да:
1.2.1 Сверяем действительное с явным, если обнаружены неточности/различия:
1.2.2 Удаляем ключевые слова, которых нет в отосланном массиве, если есть найденные то:
1.2.3 Создаем записи, ключевые слова и связи.
2. Реализация поиска по ключам, отсылаем запрос в таблицу с ключевыми словами.
2.1 При нахождении слов (по нарастающей), отсылаем их id в следующий запрос:
2.1.1 В таблице связей ключевых слов с публикацией простым запросом находим совпадения пары, если такие найдены то
2.1.1.1 Собираем id публикаций из связей и отсылаем запрос в таблицу публикаций... выводим результат.
В целом вроде бы логично всё, но ЭТОЖ СКОЛЬКО ЗАПРОСОВ? У меня мозг потух когда я осознал всю суть... теперь я не знаю как верно реализовать данную задачу.
Возможно у кого-то есть опыт в реализации аналоговых задач, моя логика явно положит скрипт одним нажатием на кнопку, ведь ключевых слов может быть много и каждый создать запрос на проверку и запись/удаление. Что посоветуете?
--
Заранее спасибо.
1. LEONeso - 08 Января, 2012 - 21:47:08 - перейти к сообщению
2. Мелкий - 08 Января, 2012 - 22:07:13 - перейти к сообщению
А в чём задача-то исходная?
3. LEONeso - 08 Января, 2012 - 23:20:38 - перейти к сообщению
Мелкий, хочу сделать поиск по индексам ключевых слов, при этом, каждое слово это отдельная запись с уникальным айдишником и привязками к той или иной таблице.
Категории имеют базовые ключевые слова, их немного.
Подкатегории имеют больше ключевых слов.
Публикации имеют много ключевых слов т.к. их больше.
Если пользователь поленился и написал в поиске типа "шар", то категории такое не будут иметь, а вот подкатегории вполне возможно, что будут иметь данные слова как и публикации. Пользователь также может уточнять свой запрос к примеру "красный шар" или же "красный шар, синий шар" где запятая разделяет запрос, но суть не в этом - это пример. Сложность в реализации, пугает огромное количество запросов т.к. я не опытен, я в основном пишу на низкоуровневом php... исходя из своих или найденных знаний... боюсь что сделаю for/foreach цикл и будут обрабатывать массив, который в свою очередь будет создаваться через explode, что так же не лучший вариант... хотя у меня выбора то и нет.
Хочется сделать шустрый поисковый скрипт по данным критериям.
Категории имеют базовые ключевые слова, их немного.
Подкатегории имеют больше ключевых слов.
Публикации имеют много ключевых слов т.к. их больше.
Если пользователь поленился и написал в поиске типа "шар", то категории такое не будут иметь, а вот подкатегории вполне возможно, что будут иметь данные слова как и публикации. Пользователь также может уточнять свой запрос к примеру "красный шар" или же "красный шар, синий шар" где запятая разделяет запрос, но суть не в этом - это пример. Сложность в реализации, пугает огромное количество запросов т.к. я не опытен, я в основном пишу на низкоуровневом php... исходя из своих или найденных знаний... боюсь что сделаю for/foreach цикл и будут обрабатывать массив, который в свою очередь будет создаваться через explode, что так же не лучший вариант... хотя у меня выбора то и нет.
Хочется сделать шустрый поисковый скрипт по данным критериям.