Изменения

Перейти к: навигация, поиск

Vitaphoto: Облака тегов

1510 байтов добавлено, 12:43, 20 июня 2016
'''Идея 4''': все предыдущие идеи относились к облакам, сопутствующим каждому множеству фотографий и отображаемых на странице наряду с другими элементами управления. Однако можно создать отдельную страницу с большим облаком, содержащим '''все теги''' системы вообще — чтобы иметь «общий вид».
'''Идея 5''': некоторые теги, как уже было сказано выше, с большой вероятностью отражают название какого-нибудь действа, будь то SECR, день рождения Пифа или поездка в Буревестник производства года этак 2007-го. Важно, что эти теги — теги некой отдельной категории. Вот и задача: как бы выделить их в отдельную категорию? Подумаем: по сути, их основное свойство в том, что они ставятся единожды на некоторое множество фотографий, снятых, скорее всего, за относительно небольшой промежуток времени, и после этого становятся «неживыми» — фотографии в них больше не добавляются. Формально выразить это проще всего через разброс дат фотографий, имеющих заданный тег - тег — предположим, фотографий в теге должно быть минимум 10, а разброс дат должен быть меньше месяца.
== SQL для реализации идеи № 2 № 2 ==
А теперь вопрос: как реализовать средствами MySQL идею № 2? :)
</html>
== Выборка по тегам == Между прочим, следует задать и ещё один вопрос, кажущийся на первый взгляд тривиальным: а как вообще выбирать из базы фотографии, имеющие заданный набор тегов? Можно выделить два способа — первый выполняется быстрее на относительно небольших (меньше 8 тегов) наборах, второй лучше масштабируется относительно количества тегов в наборе. === По JOIN’у на тег === Добавляется по соединению на каждый тег набора, а так как все соединения — внутренние, они и фильтруют всё множество фотографий: <code-sql>SELECT i1.* FROM image i1JOIN tag_image ti1 ON ti1.ti_image=i1.img_id AND ti1.ti_tag=132JOIN tag_image ti2 ON ti2.ti_image=i1.img_id AND ti2.ti_tag=113JOIN tag_image ti3 ON ti3.ti_image=i1.img_id AND ti3.ti_tag=115…и так далее…</code-sql> === Через группировку === <code-sql>SELECT i2.* FROM image i2, tag_image ti2WHERE ti2.ti_image=i2.img_id AND ti2.ti_tag IN (132, 113, 115) # набор теговGROUP BY i2.img_idHAVING COUNT(i2.img_id)=3 # количество тегов в наборе</code-sql> [[Категория:Архив]][[Категория:РазработкаSway]]

Навигация