Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
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']
...
@@ -46,42 +46,63 @@ dicoZhLogs = alemdic['dicoZhLogs']
##### STATS DICTIONNAIRES
##### STATS DICTIONNAIRES
def
getLenDic
(
dic
):
def
getLenDic
(
lang
):
lenDic
=
0
# if lang == "fr":
for
k
in
dic
.
keys
():
# alemDic = dicoFr
lenDic
+=
1
# elif lang == "en":
return
lenDic
# alemDic = dicoEn
# elif lang == "zh":
# pour requêtage depuis views.py (dicoView())
# alemDic = dicoZh
def
getLenDicFr
():
return
getLenDic
(
word2transFr
)
# query = alemDic.find()
def
getLenDicEn
():
# lenDic = 0
return
getLenDic
(
word2transEn
)
# for q in query:
def
getLenDicZh
():
# lenDic+=1
return
getLenDic
(
word2transZh
)
# 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)
##### MISE EN MÉMOIRE DES DICTIONNAIRES (seulement les transcriptions+regions)
def
makeWord2trans
(
alemDic
):
def
makeWord2trans
(
alemDic
):
query
=
alemDic
.
find
()
query
=
alemDic
.
find
()
word2trans
=
{}
word2trans
=
{}
for
q
in
query
:
for
q
in
query
:
if
q
[
'w'
]
not
in
word2trans
.
keys
():
if
len
(
q
[
'w'
].
split
(
' '
))
==
1
:
word2trans
[
q
[
'w'
]]
=
{
"t"
:
q
[
't'
]
}
# pas besoin de mettre en mémoire le reste pour l'instant (catégories, traductions, fantizi...)
# on met que les mots simples en mémoire (pas les expressions (=avec une espace))
else
:
if
q
[
'w'
]
not
in
word2trans
.
keys
():
print
(
'DOUBLON DÉTECTÉ :'
,
q
[
'w'
])
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
return
word2trans
print
(
"Mise en mémoire de dicoFr..."
)
print
(
"Mise en mémoire de dicoFr..."
)
word2transFr
=
makeWord2trans
(
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..."
)
print
(
"Mise en mémoire de dicoEn..."
)
word2transEn
=
makeWord2trans
(
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..."
)
print
(
"Mise en mémoire de dicoZh..."
)
word2transZh
=
makeWord2trans
(
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):
...
@@ -301,15 +322,12 @@ def getEntryByWord(m,mc,t,tc,lang):
# lang = langue cible ('fr', 'en', 'zh'...)
# lang = langue cible ('fr', 'en', 'zh'...)
if
lang
==
"fr"
:
if
lang
==
"fr"
:
word2trans
=
word2transFr
m
=
m
.
replace
(
"'"
,
'’'
)
m
=
m
.
replace
(
"'"
,
'’'
)
dico
=
dicoFr
dico
=
dicoFr
elif
lang
==
"en"
:
elif
lang
==
"en"
:
word2trans
=
word2transEn
m
=
m
.
replace
(
'’'
,
"'"
)
m
=
m
.
replace
(
'’'
,
"'"
)
dico
=
dicoEn
dico
=
dicoEn
elif
lang
==
"zh"
:
elif
lang
==
"zh"
:
word2trans
=
word2transZh
dico
=
dicoZh
dico
=
dicoZh
m
=
m
.
lower
()
m
=
m
.
lower
()
...
@@ -342,17 +360,24 @@ def getEntryByWord(m,mc,t,tc,lang):
...
@@ -342,17 +360,24 @@ def getEntryByWord(m,mc,t,tc,lang):
# transOK = True
# transOK = True
# if transOK: result[entree] = infos['t']
# 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
}}):
for
entree
in
dico
.
find
({
'w'
:
{
"$regex"
:
mc1
+
m
+
mc2
}}):
transOK
=
False
transOK
=
False
for
i
,
trans
in
enumerate
(
entree
[
't'
]):
if
t
!=
r
'.*'
:
if
re
.
match
(
tc1
+
t
+
tc2
,
trans
[
'tt'
].
replace
(
'.'
,
''
)):
for
i
,
trans
in
enumerate
(
entree
[
't'
]):
transOK
=
True
if
re
.
match
(
tc1
+
t
+
tc2
,
trans
[
'tt'
].
replace
(
'.'
,
''
)):
transOK
=
True
else
:
transOK
=
True
if
transOK
:
if
transOK
:
result
[
entree
[
'w'
]]
=
{}
cpt
+=
1
for
i
,
j
in
entree
.
items
():
if
cpt
<=
limite
:
if
i
!=
"_id"
:
result
[
entree
[
'w'
]]
=
{}
result
[
entree
[
'w'
]][
i
]
=
j
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)
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
):
def
modifEntry
(
user
,
mot
,
infos
,
lang
):
...
...
colorapp/views.py
View file @
b07909ce
...
@@ -227,17 +227,18 @@ def main0(request):
...
@@ -227,17 +227,18 @@ def main0(request):
def
dicoView
(
request
):
def
dicoView
(
request
):
print
(
"Réception requête dicoView()."
)
data
=
Entree
()
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
update
=
updateTime
()
data
.
nbMotsFr
=
txtphono
.
getLenDic
Fr
(
)
data
.
nbMotsFr
=
txtphono
.
getLenDic
(
'fr'
)
data
.
nbMotsEn
=
txtphono
.
getLenDic
En
(
)
data
.
nbMotsEn
=
txtphono
.
getLenDic
(
'en'
)
data
.
nbMotsZh
=
txtphono
.
getLenDic
Zh
(
)
data
.
nbMotsZh
=
txtphono
.
getLenDic
(
'zh'
)
return
render
(
request
,
'editDicoHome.html'
,
{
'data'
:
data
})
return
render
(
request
,
'editDicoHome.html'
,
{
'data'
:
data
})
def
dicoViewFr
(
request
):
def
dicoViewFr
(
request
):
data
=
Entree
()
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
update
=
updateTime
()
data
.
lenDic
=
txtphono
.
getLenDic
Fr
(
)
data
.
lenDic
=
txtphono
.
getLenDic
(
'fr'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'fr'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'fr'
)
data
.
dicoLang
=
"fr"
data
.
dicoLang
=
"fr"
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
...
@@ -245,7 +246,7 @@ def dicoViewFr(request):
...
@@ -245,7 +246,7 @@ def dicoViewFr(request):
def
dicoViewEn
(
request
):
def
dicoViewEn
(
request
):
data
=
Entree
()
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
update
=
updateTime
()
data
.
lenDic
=
txtphono
.
getLenDic
En
(
)
data
.
lenDic
=
txtphono
.
getLenDic
(
'en'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'en'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'en'
)
data
.
dicoLang
=
"en"
data
.
dicoLang
=
"en"
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
...
@@ -253,7 +254,7 @@ def dicoViewEn(request):
...
@@ -253,7 +254,7 @@ def dicoViewEn(request):
def
dicoViewZh
(
request
):
def
dicoViewZh
(
request
):
data
=
Entree
()
data
=
Entree
()
data
.
update
=
updateTime
()
data
.
update
=
updateTime
()
data
.
lenDic
=
txtphono
.
getLenDic
Zh
(
)
data
.
lenDic
=
txtphono
.
getLenDic
(
'zh'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'zh'
)
data
.
logStat
=
txtphono
.
getLogStat
(
'zh'
)
data
.
dicoLang
=
"zh"
data
.
dicoLang
=
"zh"
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
return
render
(
request
,
'editDico.html'
,
{
'data'
:
data
})
...
...
static/scripts/editDico.js
View file @
b07909ce
...
@@ -106,7 +106,8 @@ $(document).ready(function(){
...
@@ -106,7 +106,8 @@ $(document).ready(function(){
cptrows
=
0
cptrows
=
0
for
(
t
in
dico
[
i
][
1
][
'
t
'
]){
for
(
t
in
dico
[
i
][
1
][
'
t
'
]){
cptrows
+=
1
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>'
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/>
'
;
transList
+=
'
<br/>
'
;
}
}
...
...
templates/editDicoHome.html
View file @
b07909ce
...
@@ -17,7 +17,8 @@
...
@@ -17,7 +17,8 @@
<div
class=
"card cardDico border-dark"
onclick=
"location.href='fr';"
>
<div
class=
"card cardDico border-dark"
onclick=
"location.href='fr';"
>
<div
class=
"card-header"
><h4>
Français
</h4></div>
<div
class=
"card-header"
><h4>
Français
</h4></div>
<div
class=
"card-body"
style=
"text-align: left;"
>
<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>
<p>
Issu de :
</p>
<ul>
<ul>
<li>
Wiktionnaire français
</li>
<li>
Wiktionnaire français
</li>
...
@@ -29,7 +30,8 @@
...
@@ -29,7 +30,8 @@
<div
class=
"card cardDico border-dark"
onclick=
"location.href='en';"
>
<div
class=
"card cardDico border-dark"
onclick=
"location.href='en';"
>
<div
class=
"card-header"
><h4>
Anglais
</h4></div>
<div
class=
"card-header"
><h4>
Anglais
</h4></div>
<div
class=
"card-body"
style=
"text-align: left;"
>
<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>
<p>
Issu de :
</p>
<ul>
<ul>
<li>
English Wiktionary
</li>
<li>
English Wiktionary
</li>
...
@@ -43,7 +45,8 @@
...
@@ -43,7 +45,8 @@
<div
class=
"card cardDico border-dark"
onclick=
"location.href='zh';"
>
<div
class=
"card cardDico border-dark"
onclick=
"location.href='zh';"
>
<div
class=
"card-header"
><h4>
Mandarin
</h4></div>
<div
class=
"card-header"
><h4>
Mandarin
</h4></div>
<div
class=
"card-body"
style=
"text-align: left;"
>
<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>
<p>
Issu de :
</p>
<ul>
<ul>
<li>
CC-CEDICT
</li>
<li>
CC-CEDICT
</li>
...
...
Write
Preview
Markdown
is supported
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