From 9d2a3020ba369a9d187a7d8dcba634c8a6eb1f81 Mon Sep 17 00:00:00 2001
From: satok <satok@google.com>
Date: Thu, 14 Apr 2011 19:13:34 +0900
Subject: [PATCH] Promote a word with a proximity character

Bug: 4293295

Change-Id: Ib0ec8aff087c71c4fbe983f3f5bc78e9c7868fd8
---
 native/src/defines.h              | 2 +-
 native/src/unigram_dictionary.cpp | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/native/src/defines.h b/native/src/defines.h
index 2a06e94855..bdab19ff79 100644
--- a/native/src/defines.h
+++ b/native/src/defines.h
@@ -145,7 +145,7 @@ static void prof_out(void) {
 #define WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE 75
 #define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 60
 #define FULL_MATCHED_WORDS_PROMOTION_RATE 120
-#define WORDS_WITH_JUST_ONE_PROXIMITY_CHARACTER_PROMOTION_RATE 110
+#define WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE 90
 
 // This should be greater than or equal to MAX_WORD_LENGTH defined in BinaryDictionary.java
 // This is only used for the size of array. Not to be used in c functions.
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index a1efc95730..89a1c9ea60 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -552,13 +552,13 @@ inline int UnigramDictionary::calculateFinalFreq(const int inputIndex, const int
         if (sameLength && transposedPos < 0 && skipPos < 0 && excessivePos < 0) {
             finalFreq = capped255MultForFullMatchAccentsOrCapitalizationDifference(finalFreq);
         }
-    } else if (lengthFreq / 2 == matchWeight && transposedPos < 0 && skipPos < 0
-            && excessivePos < 0 && depth > 1) {
-        // Full match except only one proximity correction
+    } else if (sameLength && transposedPos < 0 && skipPos < 0 && excessivePos < 0 && depth > 1) {
+        // A word with proximity corrections
         if (DEBUG_DICT) {
             LOGI("Found one proximity correction.");
         }
-        multiplyRate(WORDS_WITH_JUST_ONE_PROXIMITY_CHARACTER_PROMOTION_RATE, &finalFreq);
+        finalFreq *= 2;
+        multiplyRate(WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE, &finalFreq);
     }
     if (sameLength) finalFreq *= FULL_WORD_MULTIPLIER;
     return finalFreq;
-- 
GitLab