enum CodeCompletionRankingModel {
Heuristics,
DecisionForest,
- } RankingModel = DecisionForest;
+ } RankingModel = Heuristics;
/// Callback used to score a CompletionCandidate if DecisionForest ranking
/// model is enabled.
// multiplciative boost (like NameMatch). This allows us to weigh the
// prediciton score and NameMatch appropriately.
Scores.ExcludingName = pow(Base, Evaluate(E));
- // Following cases are not part of the generated training dataset:
- // - Symbols with `NeedsFixIts`.
- // - Forbidden symbols.
- // - Keywords: Dataset contains only macros and decls.
+ // NeedsFixIts is not part of the DecisionForest as generating training
+ // data that needs fixits is not-feasible.
if (Relevance.NeedsFixIts)
Scores.ExcludingName *= 0.5;
if (Relevance.Forbidden)
Scores.ExcludingName *= 0;
- if (Quality.Category == SymbolQualitySignals::Keyword)
- Scores.ExcludingName *= 4;
// NameMatch should be a multiplier on total score to support rescoring.
Scores.Total = Relevance.NameMatch * Scores.ExcludingName;
}
TEST(CompletionTest, ReferencesAffectRanking) {
- EXPECT_THAT(completions("int main() { abs^ }", {func("absA"), func("absB")})
- .Completions,
- HasSubsequence(Named("absA"), Named("absB")));
- EXPECT_THAT(completions("int main() { abs^ }",
- {func("absA"), withReferences(1000, func("absB"))})
- .Completions,
- HasSubsequence(Named("absB"), Named("absA")));
+ auto Results = completions("int main() { abs^ }", {ns("absl"), func("absb")});
+ EXPECT_THAT(Results.Completions,
+ HasSubsequence(Named("absb"), Named("absl")));
+ Results = completions("int main() { abs^ }",
+ {withReferences(10000, ns("absl")), func("absb")});
+ EXPECT_THAT(Results.Completions,
+ HasSubsequence(Named("absl"), Named("absb")));
}
TEST(CompletionTest, ContextWords) {