diff --git a/src/prediction/user_history_predictor.cc b/src/prediction/user_history_predictor.cc index 78313b985..5089b9648 100644 --- a/src/prediction/user_history_predictor.cc +++ b/src/prediction/user_history_predictor.cc @@ -1432,7 +1432,10 @@ void UserHistoryPredictor::GetResultsFromHistoryDictionary( // Since dic_ is sorted in LRU, typing corrected queries are ranked lower // than the original key. for (const auto &c : corrected) { - if (LookupEntry(request_type, c.correction, c.correction, nullptr, + // Only apply when score > 0. When score < 0, we trigger literal-on-top + // in dictionary predictor. + if (c.score > 0.0 && + LookupEntry(request_type, c.correction, c.correction, nullptr, &(elm.value), prev_entry, results)) { break; } diff --git a/src/prediction/user_history_predictor_test.cc b/src/prediction/user_history_predictor_test.cc index a87f63d2d..84fd7d9ab 100644 --- a/src/prediction/user_history_predictor_test.cc +++ b/src/prediction/user_history_predictor_test.cc @@ -4408,7 +4408,7 @@ TEST_F(UserHistoryPredictorTest, TypingCorrection) { std::vector expected; auto add_expected = [&](const std::string &key) { expected.emplace_back( - TypeCorrectedQuery{key, TypeCorrectedQuery::CORRECTION}); + TypeCorrectedQuery{key, TypeCorrectedQuery::CORRECTION, 1.0}); }; // かつこ -> がっこ and かっこ