Files
openide/intellij.idea.community.main.iml
Evgeny Abramov cc938f1533 ML-based ranking in the plugin manager
(MP-6452) Fix failing project structure and packaging tests

(MP-6452) Make sure that machine learning score is calculated correctly for each plugin

Previously, there was a cache with mutable list of features. There were two issues with it. First, because of mutability, it could store mlScore for a different query sometimes. Second, there were no guarantees on consequent call of ranking and features logging before the next ranking event happens, so the feature cache could be inconsistent in certain scenarios.

(MP-6452) Introduce search index in plugin manager events that corresponds to actual query order

I also change the definition of plugin manager session. The session is restarted only in two cases: when a user clicks on the Plugins section in settings or when the search is restarted after a plugin installation.

(MP-6452) Add additional features: is result ordered by ML, is user internal, experiment group and version

(MP-6452) Fix missing date of latest plugin update, add days since latest updates and textual features

(MP-6452) Apply suggestions from the code review

(MP-6452) Integrate the ranking plugin with the search and the logging group

In feature extractors, during the first run, I calculate the features for a model to predict plugin relevance and on the second run the features to report to the MP collector (with predicted score, for example). I also implement features cache to calculate the most of the features only once

(MP-6452) Implement the baseline plugin manager session id definition and log it to FUS and MP recorders

I attach the start of a session to enableSearch method of PluginManagerConfigurable that gets triggered on "Plugins" setting group selection in the menu

(MP-6452) Add plugin for plugins ranking in the Plugin Manager

ML in SE: add embedding search integration test subsystem tag


Merge-request: IJ-MR-130364
Merged-by: Evgeny Abramov <Evgeny.Abramov@jetbrains.com>

GitOrigin-RevId: 9136d316aec2ede74bec07798dd8db16e7849f54
2024-06-04 14:58:32 +00:00

221 lines
18 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/android/android-uitests" />
<excludeFolder url="file://$MODULE_DIR$/config" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/docs/plugin-graph/dist" />
<excludeFolder url="file://$MODULE_DIR$/docs/dist-visualizer/dist" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="intellij.platform.monolith.main" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.coverage" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.ant" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.boot" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.bootstrap" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.compiler.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.compiler" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.debugger.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.debugger" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.diff" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.diff.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml.dom.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml.dom" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.execution.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.execution" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.extensions" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.guiForms.rt" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.icons" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.ui" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.rt" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.jsp" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.jsp.spi" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.lang" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.lang.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.lvcs" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.lvcs.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.compiler.instrumentationUtil" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ide" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.ide.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.starter" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.resources" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.resources.en" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.properties" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.ide.resources" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.ide.customization" exported="" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.resources" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.resources.en" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.spellchecker" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.jsp.base" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.testFramework" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.testRunner" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.usageView" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.util" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.vcs" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.vcs.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.debugger" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.debugger.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.idea.community.customization" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.plugin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.junit.java.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.jvm.analysis.java.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.copyright" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.testFramework" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.guiForms.designer" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.dev.plugin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.devkit.plugin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.eclipse" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.git" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.git.featuresTrainer" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.images" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.groovy" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.junit" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.maven" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.regexp" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.svn" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.svn.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.testng" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.langInjection" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml.langInjection" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xpath" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xslt.debugger" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xslt.debugger.rt" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.i18n" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.tasks" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.tasks.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.tasks.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.vcs.github" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.hg" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.relaxng" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.gradle.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.remoteServers.impl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.properties.resource.bundle.editor" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml.dom.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.javaFX.community" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.javaFX.jps" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.langInjection.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.manifest" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.yaml" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.xml.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.tasks.core" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.jps.model.serialization.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.guiForms.jps" scope="TEST" />
<orderEntry type="module" module-name="intellij.tasks.jira" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.decompiler" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.structuralSearch" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.structuralSearch" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.structuralSearch.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.groovy.structuralSearch" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.groovy.git" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.json" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.json.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.typeMigration" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.jps.model.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.diff.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.builtInServer.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.tools.updater" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.scriptDebugger.ui" scope="TEST" />
<orderEntry type="module" module-name="intellij.terminal" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.images.build" scope="TEST" />
<orderEntry type="module" module-name="intellij.statsCollector" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.statsCollector.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.completionMlRankingModels" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.completionMlRankingModels.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.completionMlRanking" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.completionMlRanking.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.debugger.streams" scope="RUNTIME" />
<orderEntry type="library" scope="RUNTIME" name="jgoodies-common" level="project" />
<orderEntry type="module" module-name="intellij.testng.rt.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.editorconfig" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.changeReminder" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.workspace.storage.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.workspace.jps.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.sh" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.terminal.sh" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.gradle.java.maven" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.markdown" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.markdown.plugin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.textmate" scope="TEST" />
<orderEntry type="module" module-name="intellij.webp" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.space.java.jps" scope="TEST" />
<orderEntry type="module" module-name="intellij.emojipicker" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.gradle.dependencyUpdater" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.settingsSync" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.settingsSync.git" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.java.featuresTrainer" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.idea.community.build.tasks" scope="TEST" />
<orderEntry type="module" module-name="intellij.junit.v5.rt.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.properties.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.execution.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.ml.models.local.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.kotlin.plugin.community.main" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.commander" scope="TEST" />
<orderEntry type="module" module-name="intellij.configurationScript" scope="TEST" />
<orderEntry type="module" module-name="intellij.configurationScript.test.java" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.statistics.envTests" scope="TEST" />
<orderEntry type="module" module-name="intellij.toml.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.maven.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.gradle.java.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.groovy.uast.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.remoteServers.targetsIntegrationTests" scope="TEST" />
<orderEntry type="module" module-name="intellij.python.commonTests" scope="TEST" />
<orderEntry type="module" module-name="intellij.python.reStructuredText" scope="TEST" />
<orderEntry type="module" module-name="intellij.markdown.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.laf.macos" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.laf.win10" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.ranking.core" scope="TEST" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.typos" scope="TEST" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.semantics.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.semantics.kotlin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.semantics.python" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.marketplaceMl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.toml" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.tracing.ide" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.notebooks.visualization" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.keymap.eclipse" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.keymap.visualStudio" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.keymap.netbeans" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.evaluationPlugin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.evaluationPlugin.languages.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.jps.build.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.devkit.jps.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.groovy.jps.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.ant.jps.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.vcs.gitlab" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.warmup" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5" scope="TEST" />
<orderEntry type="module" module-name="intellij.devkit.workspaceModel.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.remoteControl" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.webSymbols" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.performanceTesting" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.smart.update" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.gradle.analysis" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.html.tools" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.uast.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.runtime.repository.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.runtime.product.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.tools.devLauncher.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.html.tools.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.lombok" scope="TEST" />
<orderEntry type="module" module-name="intellij.xml.xmlbeans" scope="TEST" />
<orderEntry type="module" module-name="intellij.jsonpath" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.ide.newUiOnboarding" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.kotlin.onboarding-promoter" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.execution.process.elevation" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.vcs.github.community" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.util.coroutines.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.util.progress.tests" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5Jimfs" scope="TEST" />
<orderEntry type="module" module-name="intellij.yaml.editing" scope="RUNTIME" />
</component>
</module>