Создание запроса для двух таблиц для анализа оскорбительных слов - PullRequest
0 голосов
/ 01 декабря 2018

Я делаю анализатор чата со статистикой по использованным оскорбительным словам и соответствующей оценкой.

Структура таблицы:

Сообщения: id - уникальный идентификатор сообщения, from_id - идентификатор отправителя, дата -дата отправки, текст - текст.

Оскорбительно:

id - уникальный идентификатор оскорбительного слова, найденного в сообщении, type - числовое значение, связанное с корнем оскорбительного слова,from_id - идентификатор отправителя (такой же, как в сообщениях), in_message - идентификатор сообщения, в котором используется это оскорбительное слово, text - само оскорбительное слово.

Далее я делаю следующий запрос для созданияребята:

SELECT from_id, COUNT(*) 
FROM `Offensive` 
GROUP BY from_id 
ORDER BY `COUNT(*)` DESC

Однако мошенники начали писать сообщения типа «ебать, ебать, ебать, ебать».повысить свой рейтинг.Я думаю, что я могу просеять этот вид мошенничества, создав рейтинг с помощью запроса, который не учитывает более определенного количества оскорбительных слов за N раз, но, к сожалению, я не знаю, как это сделать...

Я также попробовал это:

SELECT from_id, COUNT(*) 
FROM (
  SELECT count(*), from_id, in_message 
  FROM `Offensive` 
  GROUP BY in_message 
  HAVING `count(*)`<100
) AS lol 
GROUP BY from_id 
ORDER BY `COUNT(*)` DESC

- не учитывать сообщения, содержащие более определенного количества оскорбительных слов, но в этом случае это просто занимает не болееодно оскорбительное слово на сообщение

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете просто посчитать количество различных оскорбительных слов.Я думаю, что это может сделать это:

SELECT from_id, COUNT(DISTINCT id)
FROM Offensive
GROUP BY from_id
ORDER BY COUNT(*) DESC;

Если вы хотите более точные ограничения, такие как «5» для каждого слова:

select from_id, sum(case when num <= 5 then num else 5 end)
from (select from_id, id, count(*) as num
      from offensive
      group by from_id, id
     ) o
group by from_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...