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

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

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

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


Прочитав данную статью, вы без каких-либо проблем самостоятельно сможете создать облако тегов для вашего сайта. Для начала давайте разберемся, что из себя представляет облако тегов или облако меток ( также принято называть облако ключевых слов, определение в 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

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

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

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


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

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

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

    Карта сайта