Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6047aae authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Set the shortcut frequency correctly."

parents be4d85fe f3204eeb
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -41,8 +41,17 @@ abstract public class AbstractDictionaryWriter extends Dictionary {

    abstract public void clear();

    /**
     * Add a unigram with an optional shortcut to the dictionary.
     * @param word The word to add.
     * @param shortcutTarget A shortcut target for this word, or null if none.
     * @param frequency The frequency for this unigram.
     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
     *   if shortcutTarget is null.
     * @param isNotAWord true if this is not a word, i.e. shortcut only.
     */
    abstract public void addUnigramWord(final String word, final String shortcutTarget,
            final int frequency, final boolean isNotAWord);
            final int frequency, final int shortcutFreq, final boolean isNotAWord);

    // TODO: Remove lastModifiedTime after making binary dictionary support forgetting curve.
    abstract public void addBigramWords(final String word0, final String word1,
+2 −2
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
            if (DEBUG) {
                Log.d(TAG, "loadAccountVocabulary: " + word);
            }
            super.addWord(word, null /* shortcut */, FREQUENCY_FOR_CONTACTS,
            super.addWord(word, null /* shortcut */, FREQUENCY_FOR_CONTACTS, 0 /* shortcutFreq */,
                    false /* isNotAWord */);
        }
    }
@@ -213,7 +213,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
                        Log.d(TAG, "addName " + name + ", " + word + ", " + prevWord);
                    }
                    super.addWord(word, null /* shortcut */, FREQUENCY_FOR_CONTACTS,
                            false /* isNotAWord */);
                            0 /* shortcutFreq */, false /* isNotAWord */);
                    if (!TextUtils.isEmpty(prevWord)) {
                        if (mUseFirstLastBigrams) {
                            super.addBigram(prevWord, word, FREQUENCY_FOR_CONTACTS_BIGRAM,
+2 −2
Original line number Diff line number Diff line
@@ -62,13 +62,13 @@ public class DictionaryWriter extends AbstractDictionaryWriter {
    // considering performance regression.
    @Override
    public void addUnigramWord(final String word, final String shortcutTarget, final int frequency,
            final boolean isNotAWord) {
            final int shortcutFreq, final boolean isNotAWord) {
        if (shortcutTarget == null) {
            mFusionDictionary.add(word, frequency, null, isNotAWord);
        } else {
            // TODO: Do this in the subclass, with this class taking an arraylist.
            final ArrayList<WeightedString> shortcutTargets = CollectionUtils.newArrayList();
            shortcutTargets.add(new WeightedString(shortcutTarget, frequency));
            shortcutTargets.add(new WeightedString(shortcutTarget, shortcutFreq));
            mFusionDictionary.add(word, frequency, shortcutTargets, isNotAWord);
        }
    }
+11 −4
Original line number Diff line number Diff line
@@ -261,10 +261,16 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {

    /**
     * Adds a word unigram to the dictionary. Used for loading a dictionary.
     * @param word The word to add.
     * @param shortcutTarget A shortcut target for this word, or null if none.
     * @param frequency The frequency for this unigram.
     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
     *   if shortcutTarget is null.
     * @param isNotAWord true if this is not a word, i.e. shortcut only.
     */
    protected void addWord(final String word, final String shortcutTarget,
            final int frequency, final boolean isNotAWord) {
        mDictionaryWriter.addUnigramWord(word, shortcutTarget, frequency, isNotAWord);
            final int frequency, final int shortcutFreq, final boolean isNotAWord) {
        mDictionaryWriter.addUnigramWord(word, shortcutTarget, frequency, shortcutFreq, isNotAWord);
    }

    /**
@@ -313,7 +319,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
     * Dynamically adds a word unigram to the dictionary. May overwrite an existing entry.
     */
    protected void addWordDynamically(final String word, final String shortcutTarget,
            final int frequency, final boolean isNotAWord) {
            final int frequency, final int shortcutFreq, final boolean isNotAWord) {
        if (!mIsUpdatable) {
            Log.w(TAG, "addWordDynamically is called for non-updatable dictionary: " + mFilename);
            return;
@@ -326,7 +332,8 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
                    mBinaryDictionary.addUnigramWord(word, frequency);
                } else {
                    // TODO: Remove.
                    mDictionaryWriter.addUnigramWord(word, shortcutTarget, frequency, isNotAWord);
                    mDictionaryWriter.addUnigramWord(word, shortcutTarget, frequency, shortcutFreq,
                            isNotAWord);
                }
            }
        });
+26 −4
Original line number Diff line number Diff line
@@ -156,15 +156,36 @@ public class ExpandableDictionary extends Dictionary {
        return Constants.DICTIONARY_MAX_WORD_LENGTH;
    }

    public void addWord(final String word, final String shortcutTarget, final int frequency) {
    /**
     * Add a word with an optional shortcut to the dictionary.
     * @param word The word to add.
     * @param shortcutTarget A shortcut target for this word, or null if none.
     * @param frequency The frequency for this unigram.
     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
     *   if shortcutTarget is null.
     */
    public void addWord(final String word, final String shortcutTarget, final int frequency,
            final int shortcutFreq) {
        if (word.length() >= Constants.DICTIONARY_MAX_WORD_LENGTH) {
            return;
        }
        addWordRec(mRoots, word, 0, shortcutTarget, frequency, null);
        addWordRec(mRoots, word, 0, shortcutTarget, frequency, shortcutFreq, null);
    }

    /**
     * Add a word, recursively searching for its correct place in the trie tree.
     * @param children The node to recursively search for addition. Initially, the root of the tree.
     * @param word The word to add.
     * @param depth The current depth in the tree.
     * @param shortcutTarget A shortcut target for this word, or null if none.
     * @param frequency The frequency for this unigram.
     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
     *   if shortcutTarget is null.
     * @param parentNode The parent node, for up linking. Initially null, as the root has no parent.
     */
    private void addWordRec(final NodeArray children, final String word, final int depth,
            final String shortcutTarget, final int frequency, final Node parentNode) {
            final String shortcutTarget, final int frequency, final int shortcutFreq,
            final Node parentNode) {
        final int wordLength = word.length();
        if (wordLength <= depth) return;
        final char c = word.charAt(depth);
@@ -204,7 +225,8 @@ public class ExpandableDictionary extends Dictionary {
        if (childNode.mChildren == null) {
            childNode.mChildren = new NodeArray();
        }
        addWordRec(childNode.mChildren, word, depth + 1, shortcutTarget, frequency, childNode);
        addWordRec(childNode.mChildren, word, depth + 1, shortcutTarget, frequency, shortcutFreq,
                childNode);
    }

    @Override
Loading