merged mode: expand termTags earlier
Fixes errors with main dictionary other than JMdict
This commit is contained in:
parent
5f6830c7dd
commit
1682850970
@ -245,22 +245,26 @@ function dictTermsMergeByGloss(result, definitions, appendTo, mergedIndices) {
|
||||
result.expression.add(definition.expression);
|
||||
result.reading.add(definition.reading);
|
||||
|
||||
// result->expressions[ Expression1[ Reading1[ Tag1, Tag2 ] ], Expression2, ... ]
|
||||
if (!result.expressions.has(definition.expression)) {
|
||||
result.expressions.set(definition.expression, new Map());
|
||||
}
|
||||
if (!result.expressions.get(definition.expression).has(definition.reading)) {
|
||||
result.expressions.get(definition.expression).set(definition.reading, new Set());
|
||||
}
|
||||
|
||||
for (const tag of definition.definitionTags) {
|
||||
if (!definitionsByGloss[gloss].definitionTags.find(existingTag => existingTag.name === tag.name)) {
|
||||
definitionsByGloss[gloss].definitionTags.push(tag);
|
||||
}
|
||||
}
|
||||
|
||||
for (const tag of definition.termTags) {
|
||||
result.expressions.get(definition.expression).get(definition.reading).add(tag);
|
||||
if (!appendTo) {
|
||||
// result->expressions[ Expression1[ Reading1[ Tag1, Tag2 ] ], Expression2, ... ]
|
||||
if (!result.expressions.has(definition.expression)) {
|
||||
result.expressions.set(definition.expression, new Map());
|
||||
}
|
||||
if (!result.expressions.get(definition.expression).has(definition.reading)) {
|
||||
result.expressions.get(definition.expression).set(definition.reading, []);
|
||||
}
|
||||
|
||||
for (const tag of definition.termTags) {
|
||||
if (!result.expressions.get(definition.expression).get(definition.reading).find(existingTag => existingTag.name === tag.name)) {
|
||||
result.expressions.get(definition.expression).get(definition.reading).push(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,9 +75,11 @@ class Translator {
|
||||
const rawDefinitionsBySequence = await this.database.findTermsBySequence(Number(sequence), options.general.mainDictionary);
|
||||
|
||||
for (const definition of rawDefinitionsBySequence) {
|
||||
const tags = await this.expandTags(definition.definitionTags, definition.dictionary);
|
||||
tags.push(dictTagBuildSource(definition.dictionary));
|
||||
definition.definitionTags = tags;
|
||||
const definitionTags = await this.expandTags(definition.definitionTags, definition.dictionary);
|
||||
definitionTags.push(dictTagBuildSource(definition.dictionary));
|
||||
definition.definitionTags = definitionTags;
|
||||
const termTags = await this.expandTags(definition.termTags, definition.dictionary);
|
||||
definition.termTags = termTags;
|
||||
}
|
||||
|
||||
const definitionsByGloss = dictTermsMergeByGloss(result, rawDefinitionsBySequence);
|
||||
@ -91,9 +93,11 @@ class Translator {
|
||||
|
||||
for (const reading of result.expressions.get(expression).keys()) {
|
||||
for (const definition of await this.database.findTermsExact(expression, reading, secondarySearchTitles)) {
|
||||
const tags = await this.expandTags(definition.definitionTags, definition.dictionary);
|
||||
tags.push(dictTagBuildSource(definition.dictionary));
|
||||
definition.definitionTags = tags;
|
||||
const definitionTags = await this.expandTags(definition.definitionTags, definition.dictionary);
|
||||
definitionTags.push(dictTagBuildSource(definition.dictionary));
|
||||
definition.definitionTags = definitionTags;
|
||||
const termTags = await this.expandTags(definition.termTags, definition.dictionary);
|
||||
definition.termTags = termTags;
|
||||
secondarySearchResults.push(definition);
|
||||
}
|
||||
}
|
||||
@ -113,11 +117,11 @@ class Translator {
|
||||
const expressions = [];
|
||||
for (const expression of result.expressions.keys()) {
|
||||
for (const reading of result.expressions.get(expression).keys()) {
|
||||
const tags = await this.expandTags(result.expressions.get(expression).get(reading), result.dictionary);
|
||||
const termTags = result.expressions.get(expression).get(reading);
|
||||
expressions.push({
|
||||
expression: expression,
|
||||
reading: reading,
|
||||
termTags: dictTagsSort(tags),
|
||||
termTags: dictTagsSort(termTags),
|
||||
termFrequency: (score => {
|
||||
if (score > 0) {
|
||||
return 'popular';
|
||||
@ -126,7 +130,7 @@ class Translator {
|
||||
} else {
|
||||
return 'normal';
|
||||
}
|
||||
})(tags.map(tag => tag.score).reduce((p, v) => p + v, 0))
|
||||
})(termTags.map(tag => tag.score).reduce((p, v) => p + v, 0))
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user