diff options
| -rw-r--r-- | ext/bg/js/database.js | 34 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 7 | 
2 files changed, 40 insertions, 1 deletions
| diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 4a4f5e82..ea55416c 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -87,6 +87,21 @@ class Database {          return results;      } +    async findTermFreq(term, titles) { +        if (!this.db) { +            throw 'database not initialized'; +        } + +        const results = []; +        await this.db.termFreq.where('expression').equals(term).each(row => { +            if (titles.includes(row.dictionary)) { +                results.push({frequency: row.frequency, dictionary: row.dictionary}); +            } +        }); + +        return results; +    } +      async findKanji(kanji, titles) {          if (!this.db) {              return Promise.reject('database not initialized'); @@ -174,6 +189,23 @@ class Database {              await this.db.terms.bulkAdd(utilIsolate(rows));          }; +        const termFreqDataLoaded = async (title, entries, total, current) => { +            if (callback) { +                callback(total, current); +            } + +            const rows = []; +            for (const [expression, frequency] of entries) { +                rows.push({ +                    expression, +                    frequency, +                    dictionary: title +                }); +            } + +            await this.db.termFreq.bulkAdd(utilIsolate(rows)); +        }; +          const kanjiDataLoaded = async (title, entries, total, current)  => {              if (callback) {                  callback(total, current); @@ -219,7 +251,7 @@ class Database {              archive,              indexDataLoaded,              termDataLoaded, -            null, +            termFreqDataLoaded,              kanjiDataLoaded,              null,              tagDataLoaded diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 1be485c7..3b9a1128 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -62,7 +62,14 @@ class Translator {              for (const definition of deinflection.definitions) {                  const tags = definition.tags.map(tag => dictTagBuild(tag, definition.tagMeta));                  tags.push(dictTagBuildSource(definition.dictionary)); + +                let frequencies = await this.database.findTermFreq(definition.expression, titles); +                if (frequencies.length === 0) { +                    frequencies = await this.database.findTermFreq(definition.reading, titles); +                } +                  definitions.push({ +                    frequencies,                      source: deinflection.source,                      reasons: deinflection.reasons,                      score: definition.score, |