From de6db32aa69be6c33d17ddb4f2dc4305e8771f59 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Fri, 14 May 2021 19:26:27 -0400 Subject: [PATCH] Improve source term exact match count (#1674) * Update sourceTermExactMatchCount to be based on headword count * Update tests --- ext/js/language/translator.js | 16 +++++++++++++--- .../data/translator-test-results-note-data1.json | 12 ++++++------ test/data/translator-test-results.json | 12 ++++++------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index 21ea9daf..d416d405 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -1007,7 +1007,6 @@ class Translator { let dictionaryIndex = Number.MAX_SAFE_INTEGER; let dictionaryPriority = Number.MIN_SAFE_INTEGER; let maxTransformedTextLength = 0; - let sourceTermExactMatchCount = 0; let isPrimary = false; const definitions = []; const definitionsMap = checkDuplicateDefinitions ? new Map() : null; @@ -1020,7 +1019,6 @@ class Translator { if (dictionaryEntry.isPrimary) { isPrimary = true; maxTransformedTextLength = Math.max(maxTransformedTextLength, dictionaryEntry.maxTransformedTextLength); - sourceTermExactMatchCount += dictionaryEntry.sourceTermExactMatchCount; const dictionaryEntryInflections = dictionaryEntry.inflections; if (inflections === null || dictionaryEntryInflections.length < inflections.length) { inflections = dictionaryEntryInflections; @@ -1033,6 +1031,18 @@ class Translator { } } + const headwordsArray = [...headwords.values()]; + + let sourceTermExactMatchCount = 0; + for (const {term, sources} of headwordsArray) { + for (const {deinflectedText, isPrimary: isPrimary2} of sources) { + if (isPrimary2 && deinflectedText === term) { + ++sourceTermExactMatchCount; + break; + } + } + } + return this._createTermDictionaryEntry( -1, isPrimary, @@ -1042,7 +1052,7 @@ class Translator { dictionaryPriority, sourceTermExactMatchCount, maxTransformedTextLength, - [...headwords.values()], + headwordsArray, definitions ); } diff --git a/test/data/translator-test-results-note-data1.json b/test/data/translator-test-results-note-data1.json index 8f5199a5..e9d41526 100644 --- a/test/data/translator-test-results-note-data1.json +++ b/test/data/translator-test-results-note-data1.json @@ -8933,7 +8933,7 @@ ] } ], - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "screenshotFileName": null, "clipboardImageFileName": null, "clipboardText": null, @@ -9261,7 +9261,7 @@ ] } ], - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "screenshotFileName": null, "clipboardImageFileName": null, "clipboardText": null, @@ -9539,7 +9539,7 @@ } ], "pitches": [], - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "screenshotFileName": null, "clipboardImageFileName": null, "clipboardText": null, @@ -9791,7 +9791,7 @@ } ], "pitches": [], - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "screenshotFileName": null, "clipboardImageFileName": null, "clipboardText": null, @@ -10745,7 +10745,7 @@ ] } ], - "sourceTermExactMatchCount": 4, + "sourceTermExactMatchCount": 2, "screenshotFileName": null, "clipboardImageFileName": null, "clipboardText": null, @@ -11198,7 +11198,7 @@ } ], "pitches": [], - "sourceTermExactMatchCount": 4, + "sourceTermExactMatchCount": 2, "screenshotFileName": null, "clipboardImageFileName": null, "clipboardText": null, diff --git a/test/data/translator-test-results.json b/test/data/translator-test-results.json index 19cc5efc..5d8e6abd 100644 --- a/test/data/translator-test-results.json +++ b/test/data/translator-test-results.json @@ -5578,7 +5578,7 @@ "score": 10, "dictionaryIndex": 0, "dictionaryPriority": 0, - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "maxTransformedTextLength": 4, "headwords": [ { @@ -5797,7 +5797,7 @@ "score": 10, "dictionaryIndex": 0, "dictionaryPriority": 0, - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "maxTransformedTextLength": 4, "headwords": [ { @@ -5996,7 +5996,7 @@ "score": 10, "dictionaryIndex": 0, "dictionaryPriority": 0, - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "maxTransformedTextLength": 2, "headwords": [ { @@ -6177,7 +6177,7 @@ "score": 10, "dictionaryIndex": 0, "dictionaryPriority": 0, - "sourceTermExactMatchCount": 2, + "sourceTermExactMatchCount": 1, "maxTransformedTextLength": 2, "headwords": [ { @@ -6630,7 +6630,7 @@ "score": 10, "dictionaryIndex": 0, "dictionaryPriority": 0, - "sourceTermExactMatchCount": 4, + "sourceTermExactMatchCount": 2, "maxTransformedTextLength": 4, "headwords": [ { @@ -7029,7 +7029,7 @@ "score": 10, "dictionaryIndex": 0, "dictionaryPriority": 0, - "sourceTermExactMatchCount": 4, + "sourceTermExactMatchCount": 2, "maxTransformedTextLength": 2, "headwords": [ {