aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/android/inputmethod/latin/BinaryDictionary.java
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2009-11-12 18:46:12 -0800
committerJean-Baptiste Queru <jbq@google.com>2009-11-12 18:46:12 -0800
commit68eb1b1932f77a34d13d0ec0ab2d76cd50fdda92 (patch)
tree01cc9bfa4fd4e2fbe8f74916cfa47257a1e4e1e8 /src/com/android/inputmethod/latin/BinaryDictionary.java
parent399d49b76d450fffc7e7e5e8ccc4111061dc9b87 (diff)
downloadlatinime-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.java29
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);