[omnibox][ml] Fix edge-case with linear-mapped scoring of doc suggest.

When enabling one of the linear-mapped scoring variants (conservative,
moderate, or aggressive), it looks like the existing implementation of
ML scoring will naively assign a final score of "min + ml_score * (max
- min)". However, this means that stale suggestions sourced from the
DocumentProvider cache, which normally have a traditional score of zero,
would be assigned a non-zero relevance score and thus get surfaced to
the user via the Omnibox popup.

Since this results in a subpar user experience (see screenshots), this
CL fixes this behavior by ensuring that we don't score any stale
suggestions using the linear-mapped ML scoring variant. This ensures
that users do not see any DocumentProvider suggestions which are
irrelevant with respect to the current Omnibox input.

BEFORE: http://screen/3zK25nppxkhdCYb
AFTER: http://screen/9RepjgfFSjmt8Fi

Bug: 40062540
Change-Id: I11389dda9602fda2ca0f0ead945bcd2cd446cfa1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5342743
Reviewed-by: manuk hovanesian <manukh@chromium.org>
Commit-Queue: Khalid Peer <khalidpeer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1271191}
2 files changed
tree: 93d9992b4eeed2b0430f870cb537271f35c3156c
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.