aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/Suggest.java
diff options
context:
space:
mode:
authorDan Zivkovic <zivkovic@google.com>2015-03-16 11:19:35 -0700
committerDan Zivkovic <zivkovic@google.com>2015-03-16 14:11:59 -0700
commit4e1f0f1bb03551efde3bc6b0a8e60465c088cda2 (patch)
treea8d71f304d8823d895a9e143552641c194546323 /java/src/com/android/inputmethod/latin/Suggest.java
parent2321c41b5bf17661e7390b7afdcf0320fbd5f134 (diff)
downloadlatinime-4e1f0f1bb03551efde3bc6b0a8e60465c088cda2.tar.gz
latinime-4e1f0f1bb03551efde3bc6b0a8e60465c088cda2.tar.xz
latinime-4e1f0f1bb03551efde3bc6b0a8e60465c088cda2.zip
Redundant code matches multiple languages.
InputLogic should not have code that tweaks suggestion ranking based on the language of the source dictionary. Bug 19744396. Change-Id: I8c0849555e74cec1302e78da04148dedd1cddabe
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Suggest.java')
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java78
1 files changed, 11 insertions, 67 deletions
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 6a0d6be9c..660b64cdf 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -147,18 +147,6 @@ public final class Suggest {
return firstSuggestedWordInfo;
}
- // Quality constants for dictionary match
- // In increasing order of quality
- // This source dictionary does not match the typed word.
- private static final int QUALITY_NO_MATCH = 0;
- // This source dictionary has a null locale, and the preferred locale is also null.
- private static final int QUALITY_MATCH_NULL = 1;
- // This source dictionary has a non-null locale different from the preferred locale. The
- // preferred locale may be null : this is still better than MATCH_NULL.
- private static final int QUALITY_MATCH_OTHER_LOCALE = 2;
- // This source dictionary matches the preferred locale.
- private static final int QUALITY_MATCH_PREFERRED_LOCALE = 3;
-
// Retrieves suggestions for non-batch input (typing, recorrection, predictions...)
// and calls the callback function with the suggestions.
private void getSuggestedWordsForNonBatchInput(final WordComposer wordComposer,
@@ -179,34 +167,18 @@ public final class Suggest {
final Locale locale = mDictionaryFacilitator.getLocale();
final ArrayList<SuggestedWordInfo> suggestionsContainer =
getTransformedSuggestedWordInfoList(wordComposer, suggestionResults,
- trailingSingleQuotesCount,
- // For transforming suggestions that don't come for any dictionary, we
- // use the currently most probable locale as it's our best bet.
- locale);
-
- boolean typedWordExistsInAnotherLanguage = false;
- int qualityOfFoundSourceDictionary = QUALITY_NO_MATCH;
- @Nullable Dictionary sourceDictionaryOfRemovedWord = null;
+ trailingSingleQuotesCount, locale);
+
+ boolean foundInDictionary = false;
+ Dictionary sourceDictionaryOfRemovedWord = null;
for (final SuggestedWordInfo info : suggestionsContainer) {
// Search for the best dictionary, defined as the first one with the highest match
// quality we can find.
- if (typedWordString.equals(info.mWord)) {
- if (locale.equals(info.mSourceDict.mLocale)) {
- if (qualityOfFoundSourceDictionary < QUALITY_MATCH_PREFERRED_LOCALE) {
- // Use this source if the old match had lower quality than this match
- sourceDictionaryOfRemovedWord = info.mSourceDict;
- qualityOfFoundSourceDictionary = QUALITY_MATCH_PREFERRED_LOCALE;
- }
- } else {
- final int matchQuality = (null == info.mSourceDict.mLocale)
- ? QUALITY_MATCH_NULL : QUALITY_MATCH_OTHER_LOCALE;
- if (qualityOfFoundSourceDictionary < matchQuality) {
- // Use this source if the old match had lower quality than this match
- sourceDictionaryOfRemovedWord = info.mSourceDict;
- qualityOfFoundSourceDictionary = matchQuality;
- }
- typedWordExistsInAnotherLanguage = true;
- }
+ if (!foundInDictionary && typedWordString.equals(info.mWord)) {
+ // Use this source if the old match had lower quality than this match
+ sourceDictionaryOfRemovedWord = info.mSourceDict;
+ foundInDictionary = true;
+ break;
}
}
@@ -215,22 +187,8 @@ public final class Suggest {
final SuggestedWordInfo whitelistedWordInfo =
getWhitelistedWordInfoOrNull(suggestionsContainer);
- final String whitelistedWord;
- if (null != whitelistedWordInfo &&
- (mDictionaryFacilitator.isForLocale(whitelistedWordInfo.mSourceDict.mLocale)
- || (!typedWordExistsInAnotherLanguage
- && !hasPlausibleCandidateInAnyOtherLanguage(suggestionsContainer,
- consideredWord, whitelistedWordInfo)))) {
- // We'll use the whitelist candidate if we are confident the user is typing in the
- // language of the dictionary it's coming from, or if there is no plausible candidate
- // coming from another language.
- whitelistedWord = whitelistedWordInfo.mWord;
- } else {
- // If on the contrary we are not confident in the current language and we have
- // at least a plausible candidate in any other language, then we don't use this
- // whitelist candidate.
- whitelistedWord = null;
- }
+ final String whitelistedWord = whitelistedWordInfo == null
+ ? null : whitelistedWordInfo.mWord;
final boolean resultsArePredictions = !wordComposer.isComposingWord();
// We allow auto-correction if whitelisting is not required or the word is whitelisted,
@@ -325,20 +283,6 @@ public final class Suggest {
false /* isObsoleteSuggestions */, inputStyle, sequenceNumber));
}
- private boolean hasPlausibleCandidateInAnyOtherLanguage(
- final ArrayList<SuggestedWordInfo> suggestionsContainer, final String consideredWord,
- final SuggestedWordInfo whitelistedWordInfo) {
- for (final SuggestedWordInfo info : suggestionsContainer) {
- if (whitelistedWordInfo.mSourceDict.mLocale.equals(info.mSourceDict.mLocale)) {
- continue;
- }
- return AutoCorrectionUtils.suggestionExceedsThreshold(info, consideredWord,
- mPlausibilityThreshold);
- }
- // No candidate in another language
- return false;
- }
-
// Retrieves suggestions for the batch input
// and calls the callback function with the suggestions.
private void getSuggestedWordsForBatchInput(final WordComposer wordComposer,