Fix a bug on upgrading user history scheme
Bug: 6626700 Change-Id: I3190d7404e45e704be79ee2031e79b18475feb8c
This commit is contained in:
parent
65b7243523
commit
ec2981a487
2 changed files with 9 additions and 1 deletions
|
@ -229,6 +229,7 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
||||||
public void loadDictionaryAsync() {
|
public void loadDictionaryAsync() {
|
||||||
synchronized(mBigramList) {
|
synchronized(mBigramList) {
|
||||||
final long last = SettingsValues.getLastUserHistoryWriteTime(mPrefs, mLocale);
|
final long last = SettingsValues.getLastUserHistoryWriteTime(mPrefs, mLocale);
|
||||||
|
final boolean initializing = last == 0;
|
||||||
final long now = System.currentTimeMillis();
|
final long now = System.currentTimeMillis();
|
||||||
// Load the words that correspond to the current input locale
|
// Load the words that correspond to the current input locale
|
||||||
final Cursor cursor = query(MAIN_COLUMN_LOCALE + "=?", new String[] { mLocale });
|
final Cursor cursor = query(MAIN_COLUMN_LOCALE + "=?", new String[] { mLocale });
|
||||||
|
@ -253,7 +254,8 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
||||||
} else if (word1.length() < BinaryDictionary.MAX_WORD_LENGTH
|
} else if (word1.length() < BinaryDictionary.MAX_WORD_LENGTH
|
||||||
&& word2.length() < BinaryDictionary.MAX_WORD_LENGTH) {
|
&& word2.length() < BinaryDictionary.MAX_WORD_LENGTH) {
|
||||||
super.setBigramAndGetFrequency(
|
super.setBigramAndGetFrequency(
|
||||||
word1, word2, new ForgettingCurveParams(fc, now, last));
|
word1, word2, initializing ? new ForgettingCurveParams(true)
|
||||||
|
: new ForgettingCurveParams(fc, now, last));
|
||||||
}
|
}
|
||||||
mBigramList.addBigram(word1, word2, (byte)fc);
|
mBigramList.addBigram(word1, word2, (byte)fc);
|
||||||
cursor.moveToNext();
|
cursor.moveToNext();
|
||||||
|
|
|
@ -30,6 +30,7 @@ public class UserHistoryForgettingCurveUtils {
|
||||||
private static final long ELAPSED_TIME_INTERVAL_MILLIS = ELAPSED_TIME_INTERVAL_HOURS
|
private static final long ELAPSED_TIME_INTERVAL_MILLIS = ELAPSED_TIME_INTERVAL_HOURS
|
||||||
* DateUtils.HOUR_IN_MILLIS;
|
* DateUtils.HOUR_IN_MILLIS;
|
||||||
private static final int HALF_LIFE_HOURS = 48;
|
private static final int HALF_LIFE_HOURS = 48;
|
||||||
|
private static final int MAX_PUSH_ELAPSED = (FC_LEVEL_MAX + 1) * (ELAPSED_TIME_MAX + 1);
|
||||||
|
|
||||||
private UserHistoryForgettingCurveUtils() {
|
private UserHistoryForgettingCurveUtils() {
|
||||||
// This utility class is not publicly instantiable.
|
// This utility class is not publicly instantiable.
|
||||||
|
@ -94,6 +95,11 @@ public class UserHistoryForgettingCurveUtils {
|
||||||
if (elapsedTimeCount <= 0) {
|
if (elapsedTimeCount <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (elapsedTimeCount >= MAX_PUSH_ELAPSED) {
|
||||||
|
mLastTouchedTime = now;
|
||||||
|
mFc = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (int i = 0; i < elapsedTimeCount; ++i) {
|
for (int i = 0; i < elapsedTimeCount; ++i) {
|
||||||
mLastTouchedTime += ELAPSED_TIME_INTERVAL_MILLIS;
|
mLastTouchedTime += ELAPSED_TIME_INTERVAL_MILLIS;
|
||||||
mFc = pushElapsedTime(mFc);
|
mFc = pushElapsedTime(mFc);
|
||||||
|
|
Loading…
Reference in a new issue