LINUX.ORG.RU

Помогите сочинить запрос для подсчета ссылок в текстах

 


0

2

Есть посты на форуме. Хочется посчитать статистику по доменам. Можно это сделать «приблизительно» без скрипта, на чистом сиквеле?

- в пределах одного поста повторы можно считать как угодно (можно учитывать, можно нет, не принципиально)
- для разных постов одинаковые домены надо просуммировать
- отбросить домены, на которые меньше 100 ссылок.

Мне не нужна великая точность, хватит «плюс-минус лапоть». Просто хочу поглядеть самые топовые сайты.

★★★★★

Делаешь mysql выборку, используя ключевое слово like для определения ссылок.
Затем считаешь кол-во уникальных значений.

Вуаля. Ну да, придется тебе подшаманить самостоятельно над запросом.

reprimand ★★★★★
()
Ответ на: комментарий от Vit
lor=> select   split_part(unnest(regexp_matches(text, 'https://[^ ]+')), '/', 3), count(1)
lor-> from     post
lor-> where    text ~* 'https?://'
lor-> group by split_part(unnest(regexp_matches(text, 'https://[^ ]+')), '/', 3)
lor-> having   count(1) > 100;

  split_part  | count 
--------------+-------
 www.avito.ru |   300 
 mail.ru      |  3000 
(1 row)              

lor=> 
anonymous
()
Ответ на: комментарий от Vit

Писал на скорую руку, что видно по подделанному с ошибками выводу, но ты учти, что это pg. В ОП не было требований к СУБД, поэтому я выбрал ту, которую захотел.

anonymous
()
Ответ на: комментарий от anonymous

Не принципиально, дальше было понятно как переделывать. Вот что получилось:

SELECT
  SUBSTRING_INDEX(SUBSTRING(pagetext, LOCATE('://', pagetext) + 3), '/', 1) AS domain,
  COUNT(*) AS cnt
FROM
  post
WHERE
  pagetext RLIKE 'https?://[^ ]+'
GROUP BY
  domain
HAVING
  cnt >= 100
ORDER BY
  cnt DESC;

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.