Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Pédagogies Multimodales
wikicolor
Commits
b07909ce
Commit
b07909ce
authored
Aug 28, 2021
by
Sylvain Coulange
Browse files
optimisation temps requetes DicoView() (getLenDic()) et DicoReq()
parent
6e236c50
Changes
4
Hide whitespace changes
Inline
Side-by-side
colorapp/textPhonographer.py
View file @
b07909ce
...
...
@@ -46,42 +46,63 @@ dicoZhLogs = alemdic['dicoZhLogs']
##### STATS DICTIONNAIRES
def
getLenDic
(
dic
):
lenDic
=
0
for
k
in
dic
.
keys
():
lenDic
+=
1
return
lenDic
# pour requêtage depuis views.py (dicoView())
def
getLenDicFr
():
return
getLenDic
(
word2transFr
)
def
getLenDicEn
():
return
getLenDic
(
word2transEn
)
def
getLenDicZh
():
return
getLenDic
(
word2transZh
)
def
getLenDic
(
lang
):
# if lang == "fr":
# alemDic = dicoFr
# elif lang == "en":
# alemDic = dicoEn
# elif lang == "zh":
# alemDic = dicoZh
# query = alemDic.find()
# lenDic = 0
# for q in query:
# lenDic+=1
# return lenDic
# VARIANTE ÉCONOMIQUE (calculée à partir des logs)
if
lang
==
"fr"
:
dicoLogs
=
dicoFrLogs
base
=
1457835
# nb d'entrées au 28 août 2021
elif
lang
==
"en"
:
dicoLogs
=
dicoEnLogs
base
=
155019
# nb d'entrées au 28 août 2021
elif
lang
==
"zh"
:
dicoLogs
=
dicoZhLogs
base
=
188996
# nb d'entrées au 28 août 2021
query
=
dicoLogs
.
find
()
nbDel
=
0
nbAdd
=
0
for
q
in
query
:
if
q
[
'type'
]
==
'ADD'
:
nbAdd
+=
1
if
q
[
'type'
]
==
'DEL'
:
nbDel
+=
1
return
base
+
nbAdd
-
nbDel
##### MISE EN MÉMOIRE DES DICTIONNAIRES (seulement les transcriptions+regions)
def
makeWord2trans
(
alemDic
):
query
=
alemDic
.
find
()
word2trans
=
{}
for
q
in
query
:
if
q
[
'w'
]
not
in
word2trans
.
keys
():
word2trans
[
q
[
'w'
]]
=
{
"t"
:
q
[
't'
]
}
# pas besoin de mettre en mémoire le reste pour l'instant (catégories, traductions, fantizi...)
else
:
print
(
'DOUBLON DÉTECTÉ :'
,
q
[
'w'
])
if
len
(
q
[
'w'
].
split
(
' '
))
==
1
:
# on met que les mots simples en mémoire (pas les expressions (=avec une espace))
if
q
[
'w'
]
not
in
word2trans
.
keys
():
word2trans
[
q
[
'w'
]]
=
{
"t"
:
q
[
't'
]
}
# pas besoin de mettre en mémoire le reste pour l'instant (catégories, traductions, fantizi...)
else
:
print
(
'DOUBLON DÉTECTÉ :'
,
q
[
'w'
])
return
word2trans
print
(
"Mise en mémoire de dicoFr..."
)
word2transFr
=
makeWord2trans
(
dicoFr
)
print
(
"Nombre d'entrées dans AlemDic-dicoFr :"
,
getLenDic
(
word2transFr
))
print
(
"Nombre d'entrées dans AlemDic-dicoFr :"
,
getLenDic
(
'fr'
))
print
(
"Mise en mémoire de dicoEn..."
)
word2transEn
=
makeWord2trans
(
dicoEn
)
print
(
"Nombre d'entrées dans AlemDic-dicoEn :"
,
getLenDic
(
word2transEn
))
print
(
"Nombre d'entrées dans AlemDic-dicoEn :"
,
getLenDic
(
(
'en'
)
))
print
(
"Mise en mémoire de dicoZh..."
)
word2transZh
=
makeWord2trans
(
dicoZh
)
print
(
"Nombre d'entrées dans AlemDic-dicoZh :"
,
getLenDic
(
word2transZh
))
print
(
"Nombre d'entrées dans AlemDic-dicoZh :"
,
getLenDic
(
'zh'
))
########################################
...
...
@@ -301,15 +322,12 @@ def getEntryByWord(m,mc,t,tc,lang):
# lang = langue cible ('fr', 'en', 'zh'...)
if
lang
==
"fr"
:
word2trans
=
word2transFr
m
=
m
.
replace
(
"'"
,
'’'
)
dico
=
dicoFr
elif
lang
==
"en"
:
word2trans
=
word2transEn
m
=
m
.
replace
(
'’'
,
"'"
)
dico
=
dicoEn
elif
lang
==
"zh"
:
word2trans
=
word2transZh
dico
=
dicoZh
m
=
m
.
lower
()
...
...
@@ -342,17 +360,24 @@ def getEntryByWord(m,mc,t,tc,lang):
# transOK = True
# if transOK: result[entree] = infos['t']
# Requêter directement MongoDB et envoyer l'ensemble des résultats (cétégories, traductions... compris)
# Requêter directement MongoDB et envoyer l'ensemble des résultats (catégories, traductions... compris)
limite
=
999999
# limite à 999999
cpt
=
0
for
entree
in
dico
.
find
({
'w'
:
{
"$regex"
:
mc1
+
m
+
mc2
}}):
transOK
=
False
for
i
,
trans
in
enumerate
(
entree
[
't'
]):
if
re
.
match
(
tc1
+
t
+
tc2
,
trans
[
'tt'
].
replace
(
'.'
,
''
)):
transOK
=
True
if
t
!=
r
'.*'
:
for
i
,
trans
in
enumerate
(
entree
[
't'
]):
if
re
.
match
(
tc1
+
t
+
tc2
,
trans
[
'tt'
].
replace
(
'.'
,
''
)):
transOK
=
True
else
:
transOK
=
True
if
transOK
:
result
[
entree
[
'w'
]]
=
{}
for
i
,
j
in
entree
.
items
():
if
i
!=
"_id"
:
result
[
entree
[
'w'
]][
i
]
=
j
cpt
+=
1
if
cpt
<=
limite
:
result
[
entree
[
'w'
]]
=
{}
for
i
,
j
in
entree
.
items
():
if
i
!=
"_id"
:
result
[
entree
[
'w'
]][
i
]
=
j
return
sorted
(
result
.
items
(),
key
=
lambda
M
:
locale
.
strxfrm
(
M
[
0
]))
# mise dans l'ordre alphabétique français (ex. é après e, et pas après z)
def
modifEntry
(
user
,
mot
,
infos
,
lang
):
...
...
colorapp/views.py
View file @
b07909ce
...
...
@@ -227,17 +227,18 @@ def main0(request):
def
dicoView
(
request
):
print
(
"Réception requête dicoView()."
)
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
nbMotsFr
=
txtphono
.
getLenDic
Fr
(
)
data
.
nbMotsEn
=
txtphono
.
getLenDic
En
(
)
data
.
nbMotsZh
=
txtphono
.
getLenDic
Zh
(
)
data
.
nbMotsFr
=
txtphono
.
getLenDic
(
'fr'
)
data
.
nbMotsEn
=
txtphono
.
getLenDic
(
'en'
)
data
.
nbMotsZh
=
txtphono
.
getLenDic
(
'zh'
)
return
render
(
request
,
'editDicoHome.html'
,
{
'data'
:
data
})
def
dicoViewFr
(
request
):
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
lenDic
=
txtphono
.
getLenDic
Fr
(
)
data
.
lenDic
=
txtphono
.
getLenDic
(
'fr'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'fr'
)
data
.
dicoLang
=
"fr"
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
...
...
@@ -245,7 +246,7 @@ def dicoViewFr(request):
def
dicoViewEn
(
request
):
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
lenDic
=
txtphono
.
getLenDic
En
(
)
data
.
lenDic
=
txtphono
.
getLenDic
(
'en'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'en'
)
data
.
dicoLang
=
"en"
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
...
...
@@ -253,7 +254,7 @@ def dicoViewEn(request):
def
dicoViewZh
(
request
):
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
lenDic
=
txtphono
.
getLenDic
Zh
(
)
data
.
lenDic
=
txtphono
.
getLenDic
(
'zh'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'zh'
)
data
.
dicoLang
=
"zh"
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
...
...
static/scripts/editDico.js
View file @
b07909ce
...
...
@@ -106,7 +106,8 @@ $(document).ready(function(){
cptrows
=
0
for
(
t
in
dico
[
i
][
1
][
'
t
'
]){
cptrows
+=
1
transList
+=
"
<span class='trans'>
"
+
dico
[
i
][
1
][
'
t
'
][
t
][
'
tt
'
]
+
"
</span> (
"
+
dico
[
i
][
1
][
'
t
'
][
t
][
'
tr
'
].
join
(
'
,
'
)
+
"
)
"
;
transList
+=
"
<span class='trans'>
"
+
dico
[
i
][
1
][
'
t
'
][
t
][
'
tt
'
]
+
"
</span>
"
if
(
dico
[
i
][
1
][
'
t
'
][
t
][
'
tr
'
])
{
transList
+=
"
(
"
+
dico
[
i
][
1
][
'
t
'
][
t
][
'
tr
'
].
join
(
'
,
'
)
+
"
)
"
;
}
if
(
dico
[
i
][
1
][
'
t
'
][
t
][
'
tc
'
])
{
transList
+=
'
<img width="20px" src="/static/im/logo-comment.png" title="
'
+
dico
[
i
][
1
][
'
t
'
][
t
][
'
tc
'
]
+
'
"></img>
'
;}
//'<span style="font-size:.8em; font-style:italic;">' + thisWordTransList[t]['c'] +'</span>'
transList
+=
'
<br/>
'
;
}
...
...
templates/editDicoHome.html
View file @
b07909ce
...
...
@@ -17,7 +17,8 @@
<div
class=
"card cardDico border-dark"
onclick=
"location.href='fr';"
>
<div
class=
"card-header"
><h4>
Français
</h4></div>
<div
class=
"card-body"
style=
"text-align: left;"
>
<p>
{{ data.nbMotsFr|intcomma }} entrées.
</p>
<!-- <p>{{ data.nbMotsFr|intcomma }} entrées.</p> -->
<p>
1 450 000+ entrées.
</p>
<p>
Issu de :
</p>
<ul>
<li>
Wiktionnaire français
</li>
...
...
@@ -29,7 +30,8 @@
<div
class=
"card cardDico border-dark"
onclick=
"location.href='en';"
>
<div
class=
"card-header"
><h4>
Anglais
</h4></div>
<div
class=
"card-body"
style=
"text-align: left;"
>
<p>
{{ data.nbMotsEn|intcomma }} entrées.
</p>
<!-- <p>{{ data.nbMotsEn|intcomma }} entrées.</p> -->
<p>
155 000+ entrées.
</p>
<p>
Issu de :
</p>
<ul>
<li>
English Wiktionary
</li>
...
...
@@ -43,7 +45,8 @@
<div
class=
"card cardDico border-dark"
onclick=
"location.href='zh';"
>
<div
class=
"card-header"
><h4>
Mandarin
</h4></div>
<div
class=
"card-body"
style=
"text-align: left;"
>
<p>
{{ data.nbMotsZh|intcomma }} entrées.
</p>
<!-- <p>{{ data.nbMotsZh|intcomma }} entrées.</p> -->
<p>
188 000+ entrées.
</p>
<p>
Issu de :
</p>
<ul>
<li>
CC-CEDICT
</li>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment