Use findTermsBySequenceBulk instead of findTermsBySequence
This commit is contained in:
parent
a25167df73
commit
a08cbebeb3
@ -52,23 +52,34 @@ class Translator {
|
|||||||
return {length, definitions: definitionsGrouped};
|
return {length, definitions: definitionsGrouped};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getSequencedDefinitions(definitions, mainDictionary) {
|
||||||
|
const definitionsBySequence = dictTermsMergeBySequence(definitions, mainDictionary);
|
||||||
|
const defaultDefinitions = definitionsBySequence['-1'];
|
||||||
|
|
||||||
|
const sequenceList = Object.keys(definitionsBySequence).map(v => Number(v)).filter(v => v >= 0);
|
||||||
|
const sequencedDefinitions = sequenceList.map((key) => ({
|
||||||
|
definitions: definitionsBySequence[key],
|
||||||
|
rawDefinitions: []
|
||||||
|
}));
|
||||||
|
|
||||||
|
for (const definition of await this.database.findTermsBySequenceBulk(sequenceList, mainDictionary)) {
|
||||||
|
sequencedDefinitions[definition.index].rawDefinitions.push(definition);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {sequencedDefinitions, defaultDefinitions};
|
||||||
|
}
|
||||||
|
|
||||||
async findTermsMerged(text, dictionaries, alphanumeric, options) {
|
async findTermsMerged(text, dictionaries, alphanumeric, options) {
|
||||||
const secondarySearchTitles = Object.keys(options.dictionaries).filter(dict => options.dictionaries[dict].allowSecondarySearches);
|
const secondarySearchTitles = Object.keys(options.dictionaries).filter(dict => options.dictionaries[dict].allowSecondarySearches);
|
||||||
const titles = Object.keys(dictionaries);
|
const titles = Object.keys(dictionaries);
|
||||||
const {length, definitions} = await this.findTerms(text, dictionaries, alphanumeric);
|
const {length, definitions} = await this.findTerms(text, dictionaries, alphanumeric);
|
||||||
|
const {sequencedDefinitions, defaultDefinitions} = await this.getSequencedDefinitions(definitions, options.general.mainDictionary);
|
||||||
const definitionsBySequence = dictTermsMergeBySequence(definitions, options.general.mainDictionary);
|
|
||||||
|
|
||||||
const definitionsMerged = [];
|
const definitionsMerged = [];
|
||||||
const mergedByTermIndices = new Set();
|
const mergedByTermIndices = new Set();
|
||||||
for (const sequence in definitionsBySequence) {
|
|
||||||
if (sequence < 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = definitionsBySequence[sequence];
|
for (const sequencedDefinition of sequencedDefinitions) {
|
||||||
|
const result = sequencedDefinition.definitions;
|
||||||
const rawDefinitionsBySequence = await this.database.findTermsBySequence(Number(sequence), options.general.mainDictionary);
|
const rawDefinitionsBySequence = sequencedDefinition.rawDefinitions;
|
||||||
|
|
||||||
for (const definition of rawDefinitionsBySequence) {
|
for (const definition of rawDefinitionsBySequence) {
|
||||||
const definitionTags = await this.expandTags(definition.definitionTags, definition.dictionary);
|
const definitionTags = await this.expandTags(definition.definitionTags, definition.dictionary);
|
||||||
@ -100,7 +111,7 @@ class Translator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dictTermsMergeByGloss(result, definitionsBySequence['-1'].concat(secondarySearchResults), definitionsByGloss, mergedByTermIndices);
|
dictTermsMergeByGloss(result, defaultDefinitions.concat(secondarySearchResults), definitionsByGloss, mergedByTermIndices);
|
||||||
|
|
||||||
for (const gloss in definitionsByGloss) {
|
for (const gloss in definitionsByGloss) {
|
||||||
const definition = definitionsByGloss[gloss];
|
const definition = definitionsByGloss[gloss];
|
||||||
@ -139,7 +150,7 @@ class Translator {
|
|||||||
definitionsMerged.push(result);
|
definitionsMerged.push(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
const strayDefinitions = definitionsBySequence['-1'].filter((definition, index) => !mergedByTermIndices.has(index));
|
const strayDefinitions = defaultDefinitions.filter((definition, index) => !mergedByTermIndices.has(index));
|
||||||
for (const groupedDefinition of dictTermsGroup(strayDefinitions, dictionaries)) {
|
for (const groupedDefinition of dictTermsGroup(strayDefinitions, dictionaries)) {
|
||||||
groupedDefinition.expressions = [{expression: groupedDefinition.expression, reading: groupedDefinition.reading}];
|
groupedDefinition.expressions = [{expression: groupedDefinition.expression, reading: groupedDefinition.reading}];
|
||||||
definitionsMerged.push(groupedDefinition);
|
definitionsMerged.push(groupedDefinition);
|
||||||
|
Loading…
Reference in New Issue
Block a user