Pull to refresh

Граф ключевых слов

Reading time2 min
Views1.6K
В начале мая этого года в разговоре с коллегой по работе (в ходе обсуждения одной задачи на практическое применение множеств) вспыл вопрос о построении связей между объектами одного сайта. Этот сайт представлял собой каталог аналогов Windows и Linux программ, и одной из «фишек» этого каталога была выборка ПО по разделам а-ля фасет (визуально фасет, а внутри все на множествах реализовано насколько я понял из обсуждения (реализацию сайта делал другой человек – нужно будет еще и с ним обсудить этот вопрос)). В общем говоря я несколько удивился задаче и… заявил, что она довольно тривиальна, и если при проектировании базы данных связи между таблицами делать как многое-к-многому, то решается все одним запросом. Поговорили и разошлись, но идея сидела в подсознании и долбила «можно же и лучше сделать».

И вот к 10-у мая я «созрел»: решил построить неориентированный граф всех связей между ключевыми словами в проекте "Медиарепозиторий", потому что с одной стороны задача очень похожа на описанную выше, с другой стороны есть достаточно приличное количество этих слов, чтобы можно было что-то строить и с третьей стороны, количество слов не настолько большое, чтобы очень долго ждать построение графа.

Сказано – сделано. Для начала был реализован функционал «связанные ключевые слова», а потом я несколько озадачился. Консультации со специалистом по SQL дал неутешительный ответ – средствами одного только SQL на существующей СУБД (MySQL 5) задача не решается. Пришлось все выносить на «клиентскую часть» – скрипт, работающий с БД.

Немного ранее я работал с набором утилит graphviz для построения графов, поэтому решил использовать его для визуализации графа и на этот раз. Средствами PHP и SQL я подготовил соответствующий .dot-файл для graphviz'а и построил необходимый граф, используюя метод fdp (neato давал сильно «скученную» картинку, а dot слишком большую).

Результат – ниже:
Граф ключевых слов

На графе ясно видно несколько «очагов кристаллизации» ключевых слов, но если честно, то я удивился именно такому виду графа – мне думалось, что он будет более «размытым» :)

По прошествии почти двух месяцев я решил сделать повторное построение графа по той же самой методике, чтобы можно было увидеть «развитие» графа.

Результат повторного построения:
Граф ключевых слов

Как оказалось развитие графа идет довольно занятное :)
Tags:
Hubs:
Total votes 18: ↑13 and ↓5+8
Comments7

Articles