Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: логика - поиск изображений
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
Привет всем, сразу к наболевшему.
Как я понимаю реализация поиска по картинкам дело не сложное т.к. это всё же поиск слов... ключевых слов. Проблема в организации базы данных.
Как я представляю/понимаю это так: 1. Таблица "images" 1.1. id 1.2. idkey (перечисление через запятую?) 1.3. src
2. Таблица "keywords" 2.1. id 2.2. keywords 2.3. count (+1, если слово дублируется... для построения облака тегов)
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Самогонщик
Отправлено: 15 Ноября, 2011 - 18:16:24
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
даю варианты:
1. добавить ещё одну таблицу чтобы стыковать нормально первую и вторую таблицу.
2. не добавлять ещё таблицу, а во второй хранить ид из первой и слово. Количество можно на лету посчитать.
В любому случае 1.2. это ад.
De-Luxis
Отправлено: 15 Ноября, 2011 - 18:39:50
Новичок
Покинул форум
Сообщений всего: 40
Дата рег-ции: Янв. 2009
Помог: 1 раз(а)
Отдельно таблица с картинками.
Отдельно таблица с тегами.
Отдельно таблица с id тегов и картинок.
Тблица 1:
id
src
Таблица 2
id
key
Таблица 3
id_image
id_key
koras
Отправлено: 15 Ноября, 2011 - 18:55:28
Частый гость
Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Что за извращение?
А одной таблицей слабо сделать?
Не усложняйте себе жизнь, а делайте сразу правильно.
Почитайте о полнотекстовом поиске и с чем его едят.
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
koras пишет:
А одной таблицей слабо сделать?
Можно и одной, но я бы для повышения своего ЧСВ оправдывая заделом на будущее (быстрый поиск тегов для подсказки пользователю) остановился бы на двух или трёх таблицах. Главное чтобы 1.2. не было. (Добавление)
Хотя о чём это я... зачем хранить теги списком через запятую а потом мучительно их искать, удалять, вставлять и т.д.?
LEONeso
Отправлено: 15 Ноября, 2011 - 20:09:26
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
Самогонщик, т.е. не стоит бояться плодить записи в базе данных... стоит делать так: 1. 'id', 'src' таблица с данными изображения 2. 'id', 'key' таблица с ключевыми словами, где "запись = одному слову" 3. 'id_src', 'id_key' связка данных двух таблиц
2.1 - explode ... затормозит работу скрипта и выдаст задержку в поисковой выдаче? верно я понимаю?
koras, в данный момент работает с одной таблицей, где привязаны ключевые слова к определенному изображению... но от сюда и ограниченный функционал ,что не есть хорошо... связывает руки для дальнейших целей.
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Самогонщик
Отправлено: 15 Ноября, 2011 - 20:17:12
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
Поиск по индексу производится за логарифмическое время, быстрее уже почти некуда.
Можно таблицу два выкинуть и ссылаться из третей сразу на первую, но тут теги будут повторяться, зато запросы проще
Вообще, выдумай типичные запросы, бахни генератор записей (100000 картинок и 1000 разных тегов по 10 связок в среднем), погоняй запросы для разных реализаций и выложи результаты, думаю всем будет интересно.
Или выбери один из вариантов и делай как делается, если что конвертнёшь в другой
LEONeso
Отправлено: 15 Ноября, 2011 - 20:44:30
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
Самогонщик, мне подсказывают об уникальных индексах... что исключит дубликаты из ключевых слов: #1062 - Duplicate entry
Вот эти нюансы, о которых я не знал, функционал mysql. Придется изучать более подробно.
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.