Jump to content
  • 0

Подсчитать количество тегов


Lionel
 Share

Question

Изначально пошел по неверному пути при создании базы данных, но теперь исправлять поздно.

Так вот, необходимо сформировать облако тегов, однако перед этим нужно узнать количество повторений каждого тега.

В БД они хранятся в виде слова в строке через пробелы. При обычном выводе я использую функцию explode.

Как мне подсчитать количество повторений каждого тега через MYSQL, заведомо указав, что нужно разбить строку на слова и искать по ним?

К примеру, данные у меня хранятся так:

id | element | tags

234 | Name of element | tag1 tag2 tag3

Нужное поле `tags` может быть вида как 'tag1 tag2 tag3', так и просто 'tag1'. Необходимо подсчитать сколько раз во всей таблице встречается 'tag1' независимо в составе какие-либо других строках поля 'tagsэ оно присутствует.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

быть может как-то так?


<?php
$query = mysql_query("SELECT * FROM `tags`");
while ($stroka = mysql_fetch_array($query)) {
$data[]=$stroka;
}
foreach($data as $value) {
$str_keyword = explode(' ', $value['tags']);
foreach ($str_keyword as $value2) {
$value2=trim($value2);
if (!isset($cloud[$value2])) {
$cloud[$value2]['cnt']=1;
} else {
$cloud[$value2]['cnt']++;
}
}
}
foreach($cloud as $key => $value3) {
echo "<a href='/tag/".$key."'>".$key."-".$value3['cnt']."</a>";
}
?>

было дело просто как-то заморачивался с облаком :)

Link to comment
Share on other sites

  • 0

Сделайте таблицу вида:

tag_name : varchar

frequency : int

По крону (или вручную) запускайте скрипт, вроде того, что предложил rus, для заполнения (обновления) этой таблицы.

Далее для выведения данных используйте эту новую таблицу.

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

Конечно, если пойти дальше, то можно по крону формировать HTML-представление облака а файл и просто подключать его на страницу ))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy