diff options
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Suggest.java')
-rwxr-xr-x | java/src/com/android/inputmethod/latin/Suggest.java | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 3e6090c72..b90547483 100755 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -53,6 +53,14 @@ public class Suggest implements Dictionary.WordCallback { */ public static final int MAXIMUM_BIGRAM_FREQUENCY = 127; + public static final int DIC_USER_TYPED = 0; + public static final int DIC_MAIN = 1; + public static final int DIC_USER = 2; + public static final int DIC_AUTO = 3; + public static final int DIC_CONTACTS = 4; + // If you add a type of dictionary, increment DIC_TYPE_LAST_ID + public static final int DIC_TYPE_LAST_ID = 4; + static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000; private BinaryDictionary mMainDict; @@ -88,12 +96,12 @@ public class Suggest implements Dictionary.WordCallback { private int mCorrectionMode = CORRECTION_BASIC; public Suggest(Context context, int dictionaryResId) { - mMainDict = new BinaryDictionary(context, dictionaryResId); + mMainDict = new BinaryDictionary(context, dictionaryResId, DIC_MAIN); initPool(); } public Suggest(Context context, ByteBuffer byteBuffer) { - mMainDict = new BinaryDictionary(context, byteBuffer); + mMainDict = new BinaryDictionary(context, byteBuffer, DIC_MAIN); initPool(); } @@ -196,6 +204,7 @@ public class Suggest implements Dictionary.WordCallback { */ public List<CharSequence> getSuggestions(View view, WordComposer wordComposer, boolean includeTypedWordIfValid, CharSequence prevWordForBigram) { + LatinImeLogger.onStartSuggestion(prevWordForBigram); mHaveCorrection = false; mCapitalize = wordComposer.isCapitalized(); collectGarbage(mSuggestions, mPrefMaxSuggestions); @@ -205,12 +214,17 @@ public class Suggest implements Dictionary.WordCallback { // Save a lowercase version of the original word mOriginalWord = wordComposer.getTypedWord(); if (mOriginalWord != null) { - mOriginalWord = mOriginalWord.toString(); - mLowerOriginalWord = mOriginalWord.toString().toLowerCase(); + final String mOriginalWordString = mOriginalWord.toString(); + mOriginalWord = mOriginalWordString; + mLowerOriginalWord = mOriginalWordString.toLowerCase(); + // Treating USER_TYPED as UNIGRAM suggestion for logging now. + LatinImeLogger.onAddSuggestedWord(mOriginalWordString, Suggest.DIC_USER_TYPED, + Dictionary.DataType.UNIGRAM); } else { mLowerOriginalWord = ""; } + // Search the dictionary only if there are at least 2 characters if (wordComposer.size() == 1 && (mCorrectionMode == CORRECTION_FULL_BIGRAM || mCorrectionMode == CORRECTION_BASIC)) { // At first character, just get the bigrams @@ -356,7 +370,8 @@ public class Suggest implements Dictionary.WordCallback { } public boolean addWord(final char[] word, final int offset, final int length, int freq, - final Dictionary.DataType dataType) { + final int dicTypeId, final Dictionary.DataType dataType) { + Dictionary.DataType dataTypeForLog = dataType; ArrayList<CharSequence> suggestions; int[] priorities; int prefMaxSuggestions; @@ -380,6 +395,7 @@ public class Suggest implements Dictionary.WordCallback { // Check if the word was already added before (by bigram data) int bigramSuggestion = searchBigramSuggestion(word,offset,length); if(bigramSuggestion >= 0) { + dataTypeForLog = Dictionary.DataType.BIGRAM; // turn freq from bigram into multiplier specified above double multiplier = (((double) mBigramPriorities[bigramSuggestion]) / MAXIMUM_BIGRAM_FREQUENCY) @@ -404,7 +420,7 @@ public class Suggest implements Dictionary.WordCallback { pos++; } } - + if (pos >= prefMaxSuggestions) { return true; } @@ -430,6 +446,8 @@ public class Suggest implements Dictionary.WordCallback { if (garbage instanceof StringBuilder) { mStringPool.add(garbage); } + } else { + LatinImeLogger.onAddSuggestedWord(sb.toString(), dicTypeId, dataTypeForLog); } return true; } |