-
Notifications
You must be signed in to change notification settings - Fork 1
/
query_grafo_autor_ano_acumulado.py
75 lines (57 loc) · 2.45 KB
/
query_grafo_autor_ano_acumulado.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import json
from query_grafo_mais_publicado2s import Mais_publicados
from elasticsearch import Elasticsearch
#from unicodedata import normalize
import io
import timeit
class Autor_ano_acumulado:
es=Elasticsearch([{'host':'localhost','port':9200}])
print(es)
autor_ano=[]
ac=0
def principal(self):
mais_publicados = Mais_publicados()
mp = mais_publicados.busca_grafo_mais_publicados_dept()
for i in range(len(mp)):
self.mais_publicados_ano(mp[i]['idlattes'], mp[i]['key'])
with io.open('autor_ano_acumulado.json', 'w',encoding='utf-8') as outfile:
json.dump(self.autor_ano, outfile,ensure_ascii=False)
def mais_publicados_ano(self,idlattes,nome):
res_autor_ano = self.busca_autor_ano(idlattes)
self.ac=0
for i in range(len(res_autor_ano['aggregations']['date']['buckets'])):
for j in range(len(res_autor_ano['aggregations']['date']['buckets'][i]['subaggs']['buckets'])):
if(idlattes == res_autor_ano['aggregations']['date']['buckets'][i]['subaggs']['buckets'][j]['key']):
self.ac = self.ac + res_autor_ano['aggregations']['date']['buckets'][i]['subaggs']['buckets'][j]['doc_count']
self.autor_ano.append({"nome":nome,
"ano":res_autor_ano['aggregations']['date']['buckets'][i]['key'],
"quantidade":res_autor_ano['aggregations']['date']['buckets'][i]['subaggs']['buckets'][j]['doc_count'],
"acumulado":self.ac})
break
def busca_autor_ano(self,idlattes):
res = self.es.search(index="ufscar", body={
"size": 0,
"aggs": {
"date": {
"terms": {
"field": "dc.date.issued.value.keyword",
"size": 200,
"order": {
"_key": "asc"
}
},"aggs": {
"subaggs": {
"terms": {
"field":"dc.contributor.author.authority.keyword"
}
}
}
}
}
})
return res
inicio = timeit.default_timer()
ac = Autor_ano_acumulado()
ac.principal()
fim = timeit.default_timer()
print ('duracao: %f' % (fim - inicio))