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
Форумы портала PHP.SU :: Версия для печати :: логика - поиск изображений
Форумы портала PHP.SU » » Работа с СУБД » логика - поиск изображений

Страниц (1): [1]
 

1. LEONeso - 15 Ноября, 2011 - 18:03:14 - перейти к сообщению
Привет всем, сразу к наболевшему.

Как я понимаю реализация поиска по картинкам дело не сложное т.к. это всё же поиск слов... ключевых слов. Проблема в организации базы данных.

Как я представляю/понимаю это так:
1. Таблица "images"
1.1. id
1.2. idkey (перечисление через запятую?)
1.3. src

2. Таблица "keywords"
2.1. id
2.2. keywords
2.3. count (+1, если слово дублируется... для построения облака тегов)
2. Самогонщик - 15 Ноября, 2011 - 18:16:24 - перейти к сообщению
даю варианты:
1. добавить ещё одну таблицу чтобы стыковать нормально первую и вторую таблицу.
2. не добавлять ещё таблицу, а во второй хранить ид из первой и слово. Количество можно на лету посчитать.

В любому случае 1.2. это ад.
3. De-Luxis - 15 Ноября, 2011 - 18:39:50 - перейти к сообщению
Отдельно таблица с картинками.
Отдельно таблица с тегами.
Отдельно таблица с id тегов и картинок.

Тблица 1:
id
src

Таблица 2
id
key

Таблица 3
id_image
id_key
4. koras - 15 Ноября, 2011 - 18:55:28 - перейти к сообщению
Что за извращение?
А одной таблицей слабо сделать?
Не усложняйте себе жизнь, а делайте сразу правильно.
Почитайте о полнотекстовом поиске и с чем его едят.

Даже ссылку подыскал http://phpclub[dot]ru/mysql/doc/fulltext-search[dot]html
5. Самогонщик - 15 Ноября, 2011 - 19:39:27 - перейти к сообщению
koras пишет:
А одной таблицей слабо сделать?
Можно и одной, но я бы для повышения своего ЧСВ оправдывая заделом на будущее (быстрый поиск тегов для подсказки пользователю) остановился бы на двух или трёх таблицах. Главное чтобы 1.2. не было.
(Добавление)
Хотя о чём это я... зачем хранить теги списком через запятую а потом мучительно их искать, удалять, вставлять и т.д.?
6. LEONeso - 15 Ноября, 2011 - 20:09:26 - перейти к сообщению
Самогонщик, т.е. не стоит бояться плодить записи в базе данных... стоит делать так:
1. 'id', 'src' таблица с данными изображения
2. 'id', 'key' таблица с ключевыми словами, где "запись = одному слову"
3. 'id_src', 'id_key' связка данных двух таблиц

2.1 - explode ... затормозит работу скрипта и выдаст задержку в поисковой выдаче? верно я понимаю?

koras, в данный момент работает с одной таблицей, где привязаны ключевые слова к определенному изображению... но от сюда и ограниченный функционал ,что не есть хорошо... связывает руки для дальнейших целей.
7. Самогонщик - 15 Ноября, 2011 - 20:17:12 - перейти к сообщению
Поиск по индексу производится за логарифмическое время, быстрее уже почти некуда.

Можно таблицу два выкинуть и ссылаться из третей сразу на первую, но тут теги будут повторяться, зато запросы проще Улыбка

Вообще, выдумай типичные запросы, бахни генератор записей (100000 картинок и 1000 разных тегов по 10 связок в среднем), погоняй запросы для разных реализаций и выложи результаты, думаю всем будет интересно.

Или выбери один из вариантов и делай как делается, если что конвертнёшь в другой Улыбка
8. LEONeso - 15 Ноября, 2011 - 20:44:30 - перейти к сообщению
Самогонщик, мне подсказывают об уникальных индексах... что исключит дубликаты из ключевых слов: #1062 - Duplicate entry

Вот эти нюансы, о которых я не знал, функционал mysql. Придется изучать более подробно.

 

Powered by ExBB FM 1.0 RC1