diff options
author | 2009-11-12 18:46:12 -0800 | |
---|---|---|
committer | 2009-11-12 18:46:12 -0800 | |
commit | 68eb1b1932f77a34d13d0ec0ab2d76cd50fdda92 (patch) | |
tree | 01cc9bfa4fd4e2fbe8f74916cfa47257a1e4e1e8 /src/com/android/inputmethod/latin/BinaryDictionary.java | |
parent | 399d49b76d450fffc7e7e5e8ccc4111061dc9b87 (diff) | |
download | latinime-68eb1b1932f77a34d13d0ec0ab2d76cd50fdda92.tar.gz latinime-68eb1b1932f77a34d13d0ec0ab2d76cd50fdda92.tar.xz latinime-68eb1b1932f77a34d13d0ec0ab2d76cd50fdda92.zip |
eclair snapshot
Diffstat (limited to 'src/com/android/inputmethod/latin/BinaryDictionary.java')
-rw-r--r-- | src/com/android/inputmethod/latin/BinaryDictionary.java | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/com/android/inputmethod/latin/BinaryDictionary.java b/src/com/android/inputmethod/latin/BinaryDictionary.java index bb4f1ba46..e7470a8fc 100644 --- a/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -32,6 +32,7 @@ public class BinaryDictionary extends Dictionary { private static final int MAX_WORDS = 16; private static final int TYPED_LETTER_MULTIPLIER = 2; + private static final boolean ENABLE_MISSED_CHARACTERS = true; private int mNativeDict; private int[] mInputCodes = new int[MAX_WORD_LENGTH * MAX_ALTERNATIVES]; @@ -64,9 +65,7 @@ public class BinaryDictionary extends Dictionary { private native boolean isValidWordNative(int nativeData, char[] word, int wordLength); private native int getSuggestionsNative(int dict, int[] inputCodes, int codesSize, char[] outputChars, int[] frequencies, - int maxWordLength, int maxWords, int maxAlternatives); - private native void setParamsNative(int typedLetterMultiplier, - int fullWordMultiplier); + int maxWordLength, int maxWords, int maxAlternatives, int skipPos); private final void loadDictionary(Context context, int resId) { AssetManager am = context.getResources().getAssets(); @@ -88,9 +87,25 @@ public class BinaryDictionary extends Dictionary { Math.min(alternatives.length, MAX_ALTERNATIVES)); } Arrays.fill(mOutputChars, (char) 0); - - int count = getSuggestionsNative(mNativeDict, mInputCodes, codesSize, mOutputChars, mFrequencies, - MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES); + Arrays.fill(mFrequencies, 0); + + int count = getSuggestionsNative(mNativeDict, mInputCodes, codesSize, + mOutputChars, mFrequencies, + MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, -1); + + // If there aren't sufficient suggestions, search for words by allowing wild cards at + // the different character positions. This feature is not ready for prime-time as we need + // to figure out the best ranking for such words compared to proximity corrections and + // completions. + if (ENABLE_MISSED_CHARACTERS && count < 5) { + for (int skip = 0; skip < codesSize; skip++) { + int tempCount = getSuggestionsNative(mNativeDict, mInputCodes, codesSize, + mOutputChars, mFrequencies, + MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, skip); + count = Math.max(count, tempCount); + if (tempCount > 0) break; + } + } for (int j = 0; j < count; j++) { if (mFrequencies[j] < 1) break; @@ -111,7 +126,7 @@ public class BinaryDictionary extends Dictionary { char[] chars = word.toString().toLowerCase().toCharArray(); return isValidWordNative(mNativeDict, chars, chars.length); } - + public synchronized void close() { if (mNativeDict != 0) { closeNative(mNativeDict); |