Improve dictionary sequence info (#1617)

* Ensure negative sequence is always -1

* Expose sequence on definition objects

* Update how sequence is exposed for definitions

* Update test data

* Update TS docs
This commit is contained in:
toasted-nutbread 2021-04-18 18:08:02 -04:00 committed by GitHub
parent 609d4fe334
commit f9774b4ce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 132 additions and 22 deletions

View File

@ -296,6 +296,10 @@ namespace Translation {
* The name of the dictionary that the definition information originated from.
*/
dictionary: string;
/**
* Database sequence number for the term. The value will be `-1` if there is no sequence.
*/
sequence: number;
/**
* Tags for the definition.
*/

View File

@ -354,7 +354,7 @@ class AnkiNoteDataCreator {
const definitions = [];
const definitionTags = [];
for (const {tags, headwordIndices, entries, dictionary} of dictionaryEntry.definitions) {
for (const {tags, headwordIndices, entries, dictionary, sequence} of dictionaryEntry.definitions) {
const definitionTags2 = [];
for (const tag of tags) {
definitionTags.push(this._convertTag(tag));
@ -362,7 +362,6 @@ class AnkiNoteDataCreator {
}
if (!hasDefinitions) { continue; }
const only = merged ? DictionaryDataUtil.getDisambiguations(dictionaryEntry.headwords, headwordIndices, allTermsSet, allReadingsSet) : void 0;
const {sequence} = dictionaryEntry;
definitions.push({
sequence,
dictionary,

View File

@ -927,8 +927,8 @@ class Translator {
return {index, term, reading, sources, tags, wordClasses};
}
_createTermDefinition(index, headwordIndices, dictionary, tags, entries) {
return {index, headwordIndices, dictionary, tags, entries};
_createTermDefinition(index, headwordIndices, dictionary, sequence, tags, entries) {
return {index, headwordIndices, dictionary, sequence, tags, entries};
}
_createTermPronunciation(index, headwordIndex, dictionary, dictionaryIndex, dictionaryPriority, pitches) {
@ -960,12 +960,14 @@ class Translator {
}
_createTermDictionaryEntryFromDatabaseEntry(databaseEntry, originalText, transformedText, deinflectedText, reasons, isPrimary, enabledDictionaryMap) {
const {term, reading: rawReading, definitionTags, termTags, definitions, score, dictionary, id, sequence, rules} = databaseEntry;
const {term, reading: rawReading, definitionTags, termTags, definitions, score, dictionary, id, sequence: rawSequence, rules} = databaseEntry;
const reading = (rawReading.length > 0 ? rawReading : term);
const {index: dictionaryIndex, priority: dictionaryPriority} = this._getDictionaryOrder(dictionary, enabledDictionaryMap);
const sourceTermExactMatchCount = (isPrimary && deinflectedText === term ? 1 : 0);
const source = this._createSource(originalText, transformedText, deinflectedText, isPrimary);
const maxTransformedTextLength = transformedText.length;
const hasSequence = (rawSequence >= 0);
const sequence = hasSequence ? rawSequence : -1;
const headwordTagGroups = [];
const definitionTagGroups = [];
@ -976,7 +978,7 @@ class Translator {
id,
isPrimary,
sequence,
sequence >= 0 ? dictionary : null,
hasSequence ? dictionary : null,
reasons,
score,
dictionaryIndex,
@ -984,7 +986,7 @@ class Translator {
sourceTermExactMatchCount,
maxTransformedTextLength,
[this._createTermHeadword(0, term, reading, [source], headwordTagGroups, rules)],
[this._createTermDefinition(0, [0], dictionary, definitionTagGroups, definitions)]
[this._createTermDefinition(0, [0], dictionary, sequence, definitionTagGroups, definitions)]
);
}
@ -1148,21 +1150,21 @@ class Translator {
}
_addTermDefinitions(definitions, newDefinitions, headwordIndexMap) {
for (const {headwordIndices, dictionary, tags, entries} of newDefinitions) {
for (const {headwordIndices, dictionary, sequence, tags, entries} of newDefinitions) {
const headwordIndicesNew = [];
for (const headwordIndex of headwordIndices) {
headwordIndicesNew.push(headwordIndexMap[headwordIndex]);
}
definitions.push(this._createTermDefinition(definitions.length, headwordIndicesNew, dictionary, tags, entries));
definitions.push(this._createTermDefinition(definitions.length, headwordIndicesNew, dictionary, sequence, tags, entries));
}
}
_addTermDefinitions2(definitions, definitionsMap, newDefinitions, headwordIndexMap) {
for (const {headwordIndices, dictionary, tags, entries} of newDefinitions) {
const key = this._createMapKey([dictionary, ...entries]);
for (const {headwordIndices, dictionary, sequence, tags, entries} of newDefinitions) {
const key = this._createMapKey([dictionary, sequence, ...entries]);
let definition = definitionsMap.get(key);
if (typeof definition === 'undefined') {
definition = this._createTermDefinition(definitions.length, [], dictionary, [], [...entries]);
definition = this._createTermDefinition(definitions.length, [], dictionary, sequence, [], [...entries]);
definitions.push(definition);
definitionsMap.set(key, definition);
}

View File

@ -8826,7 +8826,7 @@
],
"definitions": [
{
"sequence": -1,
"sequence": 4,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition13",
@ -8854,7 +8854,7 @@
]
},
{
"sequence": -1,
"sequence": 4,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition15",
@ -9154,7 +9154,7 @@
],
"definitions": [
{
"sequence": -1,
"sequence": 4,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition17",
@ -9182,7 +9182,7 @@
]
},
{
"sequence": -1,
"sequence": 4,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition19",
@ -9454,7 +9454,7 @@
],
"definitions": [
{
"sequence": -1,
"sequence": 3,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition5",
@ -9482,7 +9482,7 @@
]
},
{
"sequence": -1,
"sequence": 3,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition7",
@ -9706,7 +9706,7 @@
],
"definitions": [
{
"sequence": -1,
"sequence": 3,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition9",
@ -9734,7 +9734,7 @@
]
},
{
"sequence": -1,
"sequence": 3,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition11",
@ -9950,7 +9950,7 @@
],
"definitions": [
{
"sequence": -1,
"sequence": 1,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition1",
@ -10166,7 +10166,7 @@
],
"definitions": [
{
"sequence": -1,
"sequence": 2,
"dictionary": "Test Dictionary 2",
"glossary": [
"definition3",

View File

@ -324,6 +324,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -456,6 +457,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -596,6 +598,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -730,6 +733,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -864,6 +868,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -998,6 +1003,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -1130,6 +1136,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -1262,6 +1269,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -1402,6 +1410,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -1554,6 +1563,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -1702,6 +1712,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -1854,6 +1865,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -2008,6 +2020,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -2144,6 +2157,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -2280,6 +2294,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -2416,6 +2431,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -2548,6 +2564,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -2680,6 +2697,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -2818,6 +2836,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 5,
"tags": [
{
"name": "tag1",
@ -2946,6 +2965,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -3084,6 +3104,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -3224,6 +3245,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -3358,6 +3380,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -3498,6 +3521,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -3632,6 +3656,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -3772,6 +3797,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -3920,6 +3946,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -4074,6 +4101,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -4210,6 +4238,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -4350,6 +4379,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -4502,6 +4532,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -4656,6 +4687,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -4792,6 +4824,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -4930,6 +4963,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 5,
"tags": [
{
"name": "tag1",
@ -5030,6 +5064,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [],
"entries": [
"definition13",
@ -5078,6 +5113,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [],
"entries": [
"definition17",
@ -5126,6 +5162,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [],
"entries": [
"definition15",
@ -5174,6 +5211,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [],
"entries": [
"definition19",
@ -5224,6 +5262,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [],
"entries": [
"definition5",
@ -5274,6 +5313,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [],
"entries": [
"definition9",
@ -5324,6 +5364,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [],
"entries": [
"definition7",
@ -5374,6 +5415,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [],
"entries": [
"definition11",
@ -5420,6 +5462,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [],
"entries": [
"definition1",
@ -5466,6 +5509,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [],
"entries": [
"definition3",
@ -5582,6 +5626,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -5621,6 +5666,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -5773,6 +5819,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -5812,6 +5859,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -5966,6 +6014,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -6005,6 +6054,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -6141,6 +6191,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -6180,6 +6231,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -6312,6 +6364,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -6444,6 +6497,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -6663,6 +6717,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -6702,6 +6757,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -6741,6 +6797,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -6780,6 +6837,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -7026,6 +7084,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -7065,6 +7124,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -7104,6 +7164,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -7143,6 +7204,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -7293,6 +7355,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -7425,6 +7488,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -7569,6 +7633,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -7725,6 +7790,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -7877,6 +7943,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -8033,6 +8100,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -8187,6 +8255,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -8323,6 +8392,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -8459,6 +8529,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -8595,6 +8666,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -8727,6 +8799,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -8859,6 +8932,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -8999,6 +9073,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -9151,6 +9226,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -9299,6 +9375,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -9451,6 +9528,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -9605,6 +9683,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -9741,6 +9820,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -9877,6 +9957,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -10013,6 +10094,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -10145,6 +10227,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -10277,6 +10360,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -10417,6 +10501,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -10569,6 +10654,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -10717,6 +10803,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -10869,6 +10956,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -11023,6 +11111,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -11159,6 +11248,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -11295,6 +11385,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -11431,6 +11522,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -11563,6 +11655,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 1,
"tags": [
{
"name": "tag1",
@ -11695,6 +11788,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 2,
"tags": [
{
"name": "tag1",
@ -11811,6 +11905,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 6,
"tags": [
{
"name": "popular",
@ -11878,6 +11973,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 7,
"tags": [
{
"name": "popular",
@ -11961,6 +12057,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 6,
"tags": [
{
"name": "popular",
@ -12147,6 +12244,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -12186,6 +12284,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -12225,6 +12324,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -12264,6 +12364,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 4,
"tags": [
{
"name": "tag1",
@ -12510,6 +12611,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -12549,6 +12651,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -12588,6 +12691,7 @@
0
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",
@ -12627,6 +12731,7 @@
1
],
"dictionary": "Test Dictionary 2",
"sequence": 3,
"tags": [
{
"name": "tag1",