Reduce number of redundant Map.get calls in dictTermsMergeByGloss
This commit is contained in:
parent
45c685d00a
commit
69b5007842
@ -222,17 +222,34 @@ function dictTermsMergeByGloss(result, definitions, appendTo=null, mergedIndices
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (appendTo === null) {
|
if (appendTo === null) {
|
||||||
// result->expressions[ Expression1[ Reading1[ Tag1, Tag2 ] ], Expression2, ... ]
|
/*
|
||||||
if (!result.expressions.has(expression)) {
|
Data layout:
|
||||||
result.expressions.set(expression, new Map());
|
result.expressions = new Map([
|
||||||
|
[expression, new Map([
|
||||||
|
[reading, new Map([
|
||||||
|
[tagName, tagInfo],
|
||||||
|
...
|
||||||
|
])],
|
||||||
|
...
|
||||||
|
])],
|
||||||
|
...
|
||||||
|
]);
|
||||||
|
*/
|
||||||
|
let readingMap = result.expressions.get(expression);
|
||||||
|
if (typeof readingMap === 'undefined') {
|
||||||
|
readingMap = new Map();
|
||||||
|
result.expressions.set(expression, readingMap);
|
||||||
}
|
}
|
||||||
if (!result.expressions.get(expression).has(reading)) {
|
|
||||||
result.expressions.get(expression).set(reading, []);
|
let termTagsMap = readingMap.get(reading);
|
||||||
|
if (typeof termTagsMap === 'undefined') {
|
||||||
|
termTagsMap = new Map();
|
||||||
|
readingMap.set(reading, termTagsMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const tag of definition.termTags) {
|
for (const tag of definition.termTags) {
|
||||||
if (!result.expressions.get(expression).get(reading).find((existingTag) => existingTag.name === tag.name)) {
|
if (!termTagsMap.has(tag.name)) {
|
||||||
result.expressions.get(expression).get(reading).push(tag);
|
termTagsMap.set(tag.name, tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,8 @@ class Translator {
|
|||||||
|
|
||||||
const expressions = [];
|
const expressions = [];
|
||||||
for (const [expression, readingMap] of result.expressions.entries()) {
|
for (const [expression, readingMap] of result.expressions.entries()) {
|
||||||
for (const [reading, termTags] of readingMap.entries()) {
|
for (const [reading, termTagsMap] of readingMap.entries()) {
|
||||||
|
const termTags = [...termTagsMap.values()];
|
||||||
const score = termTags.map((tag) => tag.score).reduce((p, v) => p + v, 0);
|
const score = termTags.map((tag) => tag.score).reduce((p, v) => p + v, 0);
|
||||||
expressions.push(Translator.createExpression(expression, reading, dictTagsSort(termTags), Translator.scoreToTermFrequency(score)));
|
expressions.push(Translator.createExpression(expression, reading, dictTagsSort(termTags), Translator.scoreToTermFrequency(score)));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user