Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gremio10

Pegar mais palavras repetidas

Recommended Posts

Então pessoal, vocês sabem os trends do twitter, pois é, eu tenho de fazer algo parecido, só que comigo são as tags que mais se repetem em toda uma tabela.

 

Agora, eu não sei como posso fazer pois não posso ir pesquisando uma por uma :lol:

 

Eu encontrei esse tópico, mas infelizmente, não foi resolvido :mellow:

 

http://forum.imasters.com.br/topic/421168-como-listar-as-palavras-que-mais-se-repetem-em-uma-tabela-do-my/

 

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É trabalhoso.

 

Separar a string palavra por palavra e contar as mesmas, separar as irrelevantes como artigos , preposições etc.

 

Não sei se o MySql por ser muito usado na WEB já tem algo +ou- pronto para isto, deve ter.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito mais fácil você gravar essas palavras em uma tabela separada.

andrey@andrey:~$ mysql -u root -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 623
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use iMasters;
Database changed
mysql> create table words (
   ->         id integer auto_increment,
   ->        word varchar ( 42 ) not null ,
   ->      primary key ( id )
   -> ) engine = myisam;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into words ( `word` ) values
   -> ( 'programação' ) ,
   -> ( 'codificação' ),
   -> ( 'google' ) ,
   -> ( 'yahoo' ) ,
   -> ( 'bomba' ) ,
   -> ( 'hiv' ) ,
   -> ( 'terminal' ) ,
   -> ( 'linux' ) ,
   -> ( 'windows' ) ,
   -> ( 'windows' ) ,
   -> ( 'sql' ) ,
   -> ( 'php' ) ,
   -> ( 'mysql' ),
   -> ( 'google+' ),
   -> ( 'google' ),
   -> ( 'terminal' ),
   -> ( 'yahoo' ),
   -> ( 'microsoft' ) ;
Query OK, 18 rows affected (0.00 sec)
Records: 18  Duplicates: 0  Warnings: 0

mysql> select word from words group by word having count(*) > 1;
+----------+
| word     |
+----------+
| google   |
| terminal |
| windows  |
| yahoo    |
+----------+
4 rows in set (0.00 sec)

mysql> select word, count(*) from words group by word having count(*) > 1;
+----------+----------+
| word     | count(*) |
+----------+----------+
| google   |        2 |
| terminal |        2 |
| windows  |        2 |
| yahoo    |        2 |
+----------+----------+
4 rows in set (0.00 sec)

mysql> insert into words values ( null , 'Google' ) ;
Query OK, 1 row affected (0.00 sec)

mysql> select word, count(*) from words group by word having count(*) > 1;
+----------+----------+
| word     | count(*) |
+----------+----------+
| google   |        3 |
| terminal |        2 |
| windows  |        2 |
| yahoo    |        2 |
+----------+----------+
4 rows in set (0.00 sec)

mysql> select word, count(*) as `rpt` from words group by word having count(*) >= 1 order by `rpt` desc;
+-------------+-----+
| word        | rpt |
+-------------+-----+
| google      |   3 |
| windows     |   2 |
| terminal    |   2 |
| yahoo       |   2 |
| programação |   1 |
| bomba       |   1 |
| google+     |   1 |
| codificação |   1 |
| hiv         |   1 |
| sql         |   1 |
| microsoft   |   1 |
| php         |   1 |
| linux       |   1 |
| mysql       |   1 |
+-------------+-----+
14 rows in set (0.00 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, de outro jeito é impossível .. alias, impossível no SQL puro .. talvez uma function, procedure você consiga .. mas é meio chato de fazer esse tipo de coisa ( brincando com delimitadores de texto em uma unica coluna ) , o que eu recomendo, é um contador.

 

Você cria uma tabela, onde será armazenado ( tag , used ) , então quando alguém adicionar essa tag, você verifica se há uma tag existente no banco, se houver, soma +1 no used, se não houver, adiciona a tag ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verdade, eu estava pensando nisso, mas como não sei muito SQL, fui no google e aqui para tirar dúvidas...

 

Vou fazer isso, obrigado

 

Terá de montar uma inteligencia para expugar as palavras irrelevantes.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Terá de montar uma inteligencia para expugar as palavras irrelevantes.

 

Pois é Motta, vou ter de fazer testes e testes tanto no SQL quanto na linguagem de programação...

 

só tenho uma duvida, será que outro tipo de linguagem de programação não facilitaria

o filtro dos dados ?

 

tipo ruby ou python ?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
só tenho uma duvida, será que outro tipo de linguagem de programação não facilitaria

o filtro dos dados ?

 

tipo ruby ou python ?

 

Sim, seria exatamente aí onde você faria esse filtro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.