Не перший десяток разів повертаюсь до проблеми категорізації для міток під публікаціями, кручу ними "і так, і так"... Здавалось би така проста задача, на перший погляд.
Найпростіший спосіб - надати можливість користувачам писати однорівневі мітки як їм захочеться, так як це зроблено на Stackoverflow.
Але в такий спосіб, по-перше, мітки можуть часто підбиратись абсолютно унікальні, котрі майже не будуть використовуватись іншими користувачами. Наприклад, якщо хтось вздумає придумати такі мітки як "відкриття однієї штуки", "у мене не виходить" і т.п. Очевидно, що вони будуть абсолютно марно займати місце в базі даних.
По-друге, такі мітки часто можуть бути досить неточними. Наприклад, однорівневі мітки "array", "веб-розробка" і т.д. мають неоднозначну й дуже широку область, тому вони теж будуть не ефективно описувати публікації.
На даний момент мені найбільше подобається ідея створення міток по формулі:
група, до якої входить певний бренд -> назва бренда -> певна мітка
Тут перші два рівня будуть статичними, користувач повинен буде придумувати мітку на місці фрази "певна мітка".
Ось деякі наприклади:
`Мови програмування -> JavaScript -> closures`
`Операційні системи -> Android -> emulator`
`Програмні бібліотеки -> jQuery -> visibility`
`Розмітка та стилі -> HTML -> checkbox`
`СУБД -> MySQL/MariaDB -> timestamp`
`Мови програмування -> SQL -> inner join` (знаю що SQL це не зовсім мова програмування, але це не велика погрішність)
`Веб-фреймворки -> Ruby on Rails -> authenticity-token`
`Фреймворки -> .NET -> enumeration`
Існує проблема з даною системою, бо такі доречні мітки можуть писати користувачі не нижче мідла в своїй області знань, мені так здається. Хоча, якщо написати чіткі правила для такого підбору, то може й джуніори придумуватимуть їх як належить.
Мій варіант правил на даний момент:
1. При створенні мітки, пам'ятайте, що вона повинна впізнаватись іншими користувачами, хто володіє знаннями з вибраного контексту для даної мітки.
2. Бажано щоб новостворена мітка була на стільки універсальною, щоб вона могла підходити до групи аналогів в своєму контексті. Наприклад, у прикладі
`Мови програмування -> JavaScript -> array`
та
`Мови програмування -> PHP -> array`
мітка `array` підходить до більше, ніж однієї мови програмування. В даному випадку краще вибирати саме мітку "array", навіть якщо ви хотіли б створити мітку "видалення елементу в масиві".
3. Можна створювати й більш унікальні мітки для вибраного контексту, але все одно вони повинні бути впізнаваними. Наприклад, `Мови програмування -> JavaScript -> use strict`.
Звичайно ж під формулу:
група, до якої входить певний бренд -> назва бренда -> певна мітка
далеко не усе підженеш, але спочатку спробую упорядкувати категорізацію для міток по частинам.
Що думаєте з цього приводу? Підійде такий варіант для широкого загалу, включаючи джуніорів?