Карта сайта
Обслуживание компьютеров, ремонт компьютеров, 1С предприятие, обслуживание серверов,создание сайтов, продвижение сайтов, доработка 1С предприятие
О компании | Статьи | WEB | Облако запросов для сайта

« Назад « На главную

Облако запросов для сайта

Как создать облако тегов на сайте


Прочитав данную статью, вы без каких-либо проблем самостоятельно сможете создать облако тегов для вашего сайта. Для начала давайте разберемся, что из себя представляет облако тегов или облако меток ( также принято называть облако ключевых слов, определение в Wikipedia ). По сути - это набор ключевых слов, размер каждого из которых тем больше, чем чаще данное слово встречается на страницах сайта. 


Подготовка страниц сайта


Чтобы начать создание облака, нужно подготовить страницы сайта. На данном этапе мы предлагаем два варианта: либо присвоить каждой странице отдельный параметр - список ключевых слов, либо система сама будет анализировать контент страницы, выявляя появление в нем нужных слов. Выбирая первый способ, вам потребуется создать отдельное поле в Базе данных ( если она, конечно, имеется) для каждой страницы и хранить в нем ключевые слова. Если на вашем хостинге отсутствует БД, то есть альтернативный вариант - хранить слова в скрытом


на каждой странице, однако, это не самый лучший вариант, т.к. при обработке он потребует немалых ресурсов сервера.

Выбор модели облака - высоконагруженная модель дерева тегов


Подготовив страницы, переходим к следующему этапу. При выводе дерева тегов на сайте, вы можете выбрать два пути:


1. Весь анализ страниц и перерасчет облака происходит при каждом обновлении страницы. Мы даже не будем рассматривать данный вариант, т.к. он создаст колоссальную нагрузку на ваш сервер, и это просто непрактично.


2. Данный способ разделяет облако на 2 составляющие, так называемая frontent-backend модель. Для нее вам не обязательно потребуются 2 выделенных сервера, все можно реализовать на обычном хостинге с php, но нагрузка на сайт по сравнению с первым вариантом будет несравнима.


Суть идеи заключается в том, что мы пишем модуль, который формирует html-файл с нашим деревом, ставим этот модуль на Cron ( к примеру, чтобы он запускался раз в 2 недели, чаще и не потребуется), а на сайте мы просто будем отдавать статику, то есть вывод дерева примерно будет выглядеть так:


 


Написание модуля


Настал самый сложный этап - написание модуля, который будет создавать статический файл с деревом. Для начала составим каркас ( стили для наглядности будут прописаны прямо в тегах, но само собой, лучше их вынести в .css файл ).


Каркас облака:


 


Функция вывода одного ключевого слова:


 


function drawKeyWord($word,$href="/",$size)
{
    if(strlen($word)==0 )
    {
        return "";
    }
    return "".$word." ";
}
?>


Далее необходимо написать алгоритм анализа ключевых слов, и определение размера каждого. Рассмотрим пример, когда ключевые слова для каждой страницы хранятся в отдельной ячейке таблицы для каждой страницы.


Примерная структура таблицы:


pageID - ID страницы


words - слова через запятую


Первым делом нужно собрать весь список слов, одновременно получив количество его вхождений на сайте. Можно придумать множество алгоритмов обработки, можно придумать другую схему БД, и выполнить сложный запрос с группировкой, который также уменьшит количество итераций в цикле обработки, мы лишь рассмотрим один из возможных вариантов:


function getWords()
{
    $words=array();
    $q=mysql_query("SELECT words FOM `keywords_table` WHERE 1"); // выбираем все слова
    while($row=mysql_fetch_array($q))
$str=explode(",",$row["words"]);
$kol=count($str);
        for($i=0;$i            {
                if(!in_array($str[$i],$words)){$words[$str[$i]]=0;}else{$words[$str[$i]]++;}
         }
    }
    return $words;
}
?>



Результатом работы данной функции будет являться массив $words, в качестве ключей которого будут ключевые слова, а значения - их количество на страницах. Теперь осталось совсем немного, нужно запустить цикл обработки каждого слова, и записать результат в переменную, ниже приведен исходный код:


$words=getWords();
$min_sh=8;  // минимальный размер слова в облаке
$max_sh=16;  // максимальный размер слова в облаке
$max=0;
foreach($words as $word=>$length){   // цикл определяет самое часто употребляемое слово на сайте
  if($length>$max){$max=$length;}
}
// переменная $content служит для хранения контента нашего облака тегов
$content.="


";  
foreach($words as $word=>$length){
    $percent=($length/$max);   // расчет размера слова в облаке тегов
    $s=round($max_sh*$percent);  //  $s - итог расчета,  размер слова в pt
    if($s    $content.=drawKeyWord($word,"",$s); // 2ой параметр - ссылка, заполните сами
}
$content.="

";


Осталось записать переменную в файл:


$filename="tags_tree.html";
$f=fopen($filename, "w") or die("error");
$fputs($f,$content);
fclose($f);


Приведенный код очевиден, и в комментариях не нуждается. Вы можете скачать исходный код модуля одним файлом.


Исходный код примера модуля, формирующего облако меток, является лишь примером и схемой для общего алгоритма действия. Каждый веб проект требует индивидуального подхода к его проектированию. Никогда не жалейте времени и сил на написание качественного и оптимизированного кода, и всегда старайтесь писать проекты, рассчитывая, что они будут работать под высокой нагрузкой, это в будущем сэкономит вам средства и время на решение возникших проблем.

10 Июль 2011 г.



метки:



Вверх

Подписаться на RSS

  • Новости
  • Статьи
  • Разделы статей

    Наши контакты

    +7 922 292-00-34

    +7(343)361-52-00

    Напишите нам через форму!!!

    Быстрая форма связи с нами

     
    Ваше имя?*
    Как с Вами связаться?*
    Опишите вопрос или сообщение*
    Введите код *


    Знаком (*) выделены обязательные поля.
    Каталог интернет ресурсов - ИнфоПитер
    1С Предприятие
    1С Предприятие

    Антивирусная защита, FireWall
    Антивирусная защита, FireWall

    Заправка Samsung/Xerox
    Заправка Samsung/Xerox

    Заправка картриджей Brother
    Заправка картриджей Brother

    Заправка картриджей Epson/Konica Minolta
    Заправка картриджей Epson/Konica Minolta

    Заправка картриджей HP/Canon black
    Заправка картриджей HP/Canon black

    Заправка картриджей HP/Canon color
    Заправка картриджей HP/Canon color

    Заправка картриджей Lexmark
    Заправка картриджей Lexmark

    Информационные услуги
    Информационные услуги

    Монтаж локальной сети
    Монтаж локальной сети

    Монтирование кабель каналов
    Монтирование кабель каналов

    Настройка внутреннего оборудования
    Настройка внутреннего оборудования

    Настройка работоспособности переферийного оборудования
    Настройка работоспособности переферийного оборудования

    Обслуживание компьютеров
    Обслуживание компьютеров

    Обслуживание серверов
    Обслуживание серверов

    Оптимизация веб сайтов
    Оптимизация веб сайтов

    Разовые услуги
    Разовые услуги

    Ремонт
    Ремонт

    Ремонт оргтехники
    Ремонт оргтехники

    Создание веб (WEB) сайтов
    Создание веб (WEB) сайтов


    упвап

    Юридические услуги
    Юридические услуги

    Наверх

    ООО "Бизнес Технологии"© 2010 г.

    Написать автору

    Карта сайта