mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
ML in SE: Refactor recent files prioritization in SE
Added a flag in the MixedListFactory constructor, renamed the experiment type name, added shouldAllTabPrioritizeRecentFiles as a property instead of a function and refactored code (cherry picked from commit 87488864e2841b5f57833c5aaf76e7a672168d29) IJ-CR-117209 GitOrigin-RevId: 0f5ae4c8b830f2f68ddaebf9b3534e12a040d19f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
61cc7bd78f
commit
39fa92a0ad
@@ -15,18 +15,20 @@ final class MixedListFactory extends SEResultsListFactory {
|
||||
|
||||
private final List<String> prioritizedContributors = new ArrayList<>();
|
||||
|
||||
MixedListFactory() {
|
||||
MixedListFactory(boolean forceDisableRecentFilesPrioritization) {
|
||||
prioritizedContributors.add(CalculatorSEContributor.class.getName());
|
||||
prioritizedContributors.add("AutocompletionContributor");
|
||||
prioritizedContributors.add("CommandsContributor");
|
||||
prioritizedContributors.add(TopHitSEContributor.class.getSimpleName());
|
||||
if (Registry.is("search.everywhere.recent.at.top")) {
|
||||
prioritizedContributors.add(RecentFilesSEContributor.class.getSimpleName());
|
||||
if (!forceDisableRecentFilesPrioritization) {
|
||||
if (Registry.is("search.everywhere.recent.at.top")) {
|
||||
prioritizedContributors.add(RecentFilesSEContributor.class.getSimpleName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void remove(String contributorId) {
|
||||
prioritizedContributors.remove(contributorId);
|
||||
MixedListFactory(){
|
||||
this(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -30,6 +30,8 @@ interface SearchEverywhereMlService {
|
||||
}
|
||||
}
|
||||
|
||||
val shouldAllTabPrioritizeRecentFiles: Boolean
|
||||
|
||||
/**
|
||||
* Indicates whether machine learning in Search Everywhere is enabled.
|
||||
* This method can return false if ML-ranking is disabled and no experiments are allowed
|
||||
@@ -63,6 +65,4 @@ interface SearchEverywhereMlService {
|
||||
fun wrapRenderer(renderer: ListCellRenderer<Any>, listModel: SearchListModel): ListCellRenderer<Any>
|
||||
|
||||
fun buildListener(listModel: SearchListModel, resultsList: JBList<Any>, selectionTracker: SEListSelectionTracker): SearchListener?
|
||||
|
||||
fun shouldAllTabPrioritizeRecentFiles(tabId: String) : Boolean
|
||||
}
|
||||
@@ -157,9 +157,6 @@ public final class SearchEverywhereUI extends BigPopupUI implements DataProvider
|
||||
@NotNull Function<? super String, String> shortcutSupplier,
|
||||
@Nullable SearchEverywhereSpellingCorrector spellingCorrector) {
|
||||
super(project);
|
||||
myListFactory = Experiments.getInstance().isFeatureEnabled("search.everywhere.mixed.results")
|
||||
? new MixedListFactory()
|
||||
: new GroupedListFactory();
|
||||
|
||||
mySpellingCorrector = spellingCorrector;
|
||||
|
||||
@@ -171,10 +168,17 @@ public final class SearchEverywhereUI extends BigPopupUI implements DataProvider
|
||||
shortcutSupplier, project == null ? null : new ShowInFindToolWindowAction(), this);
|
||||
|
||||
myMlService = SearchEverywhereMlService.getInstance();
|
||||
|
||||
if (Experiments.getInstance().isFeatureEnabled("search.everywhere.mixed.results")) {
|
||||
myListFactory =
|
||||
(myMlService != null && !myMlService.getShouldAllTabPrioritizeRecentFiles()) ?
|
||||
new MixedListFactory(true) : new MixedListFactory();
|
||||
}
|
||||
else {
|
||||
myListFactory = new GroupedListFactory();
|
||||
}
|
||||
|
||||
if (myMlService != null) {
|
||||
if (myListFactory instanceof MixedListFactory && !myMlService.shouldAllTabPrioritizeRecentFiles(myHeader.getSelectedTab().getID())) {
|
||||
((MixedListFactory)myListFactory).remove(RecentFilesSEContributor.class.getSimpleName());
|
||||
}
|
||||
myMlService.onSessionStarted(myProject, new SearchEverywhereMixedListInfo(myListFactory));
|
||||
}
|
||||
|
||||
|
||||
@@ -30,14 +30,22 @@ class SearchEverywhereMlRankingService : SearchEverywhereMlService {
|
||||
|
||||
internal val experiment: SearchEverywhereMlExperiment = SearchEverywhereMlExperiment()
|
||||
|
||||
override val shouldAllTabPrioritizeRecentFiles: Boolean
|
||||
get() = experiment.getExperimentForTab(
|
||||
SearchEverywhereTabWithMlRanking.ALL) != SearchEverywhereMlExperiment.ExperimentType.NO_RECENT_FILES_PRIORITIZATION
|
||||
|
||||
|
||||
override fun isEnabled(): Boolean {
|
||||
val settings = service<SearchEverywhereMlSettings>()
|
||||
return settings.isSortingByMlEnabledInAnyTab() || experiment.isAllowed
|
||||
}
|
||||
|
||||
internal fun shouldUseExperimentalModel(tab: SearchEverywhereTabWithMlRanking): Boolean {
|
||||
return experiment.getExperimentForTab(tab) == SearchEverywhereMlExperiment.ExperimentType.USE_EXPERIMENTAL_MODEL
|
||||
|| experiment.getExperimentForTab(tab) == SearchEverywhereMlExperiment.ExperimentType.USE_MODEL_WITHOUT_RECENT_FILES_PRIOR
|
||||
return when (experiment.getExperimentForTab(tab)) {
|
||||
SearchEverywhereMlExperiment.ExperimentType.USE_EXPERIMENTAL_MODEL -> true
|
||||
SearchEverywhereMlExperiment.ExperimentType.NO_RECENT_FILES_PRIORITIZATION -> true
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
internal fun getCurrentSession(): SearchEverywhereMLSearchSession? {
|
||||
@@ -55,13 +63,6 @@ class SearchEverywhereMlRankingService : SearchEverywhereMlService {
|
||||
}
|
||||
}
|
||||
|
||||
override fun shouldAllTabPrioritizeRecentFiles(tabId: String): Boolean {
|
||||
val tab = SearchEverywhereTabWithMlRanking.findById(tabId)
|
||||
return tab?.let {
|
||||
experiment.getExperimentForTab(tab) != SearchEverywhereMlExperiment.ExperimentType.USE_MODEL_WITHOUT_RECENT_FILES_PRIOR
|
||||
} ?: true
|
||||
}
|
||||
|
||||
override fun createFoundElementInfo(contributor: SearchEverywhereContributor<*>,
|
||||
element: Any,
|
||||
priority: Int): SearchEverywhereFoundElementInfo {
|
||||
@@ -137,7 +138,7 @@ class SearchEverywhereMlRankingService : SearchEverywhereMlService {
|
||||
else {
|
||||
return settings.isSortingByMlEnabled(tab)
|
||||
|| experiment.getExperimentForTab(tab) == SearchEverywhereMlExperiment.ExperimentType.USE_EXPERIMENTAL_MODEL
|
||||
|| experiment.getExperimentForTab(tab) == SearchEverywhereMlExperiment.ExperimentType.USE_MODEL_WITHOUT_RECENT_FILES_PRIOR
|
||||
|| experiment.getExperimentForTab(tab) == SearchEverywhereMlExperiment.ExperimentType.NO_RECENT_FILES_PRIORITIZATION
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ class SearchEverywhereMlExperiment {
|
||||
|
||||
SearchEverywhereTabWithMlRanking.ALL to Experiment(
|
||||
2 to ExperimentType.USE_EXPERIMENTAL_MODEL,
|
||||
3 to ExperimentType.USE_MODEL_WITHOUT_RECENT_FILES_PRIOR
|
||||
3 to ExperimentType.NO_RECENT_FILES_PRIORITIZATION
|
||||
)
|
||||
)
|
||||
|
||||
@@ -90,7 +90,7 @@ class SearchEverywhereMlExperiment {
|
||||
internal fun getTabExperiments(): Map<SearchEverywhereTabWithMlRanking, Experiment> = tabExperiments
|
||||
|
||||
enum class ExperimentType {
|
||||
NO_EXPERIMENT, NO_ML, USE_EXPERIMENTAL_MODEL, NO_ML_FEATURES, ENABLE_TYPOS, USE_MODEL_WITHOUT_RECENT_FILES_PRIOR
|
||||
NO_EXPERIMENT, NO_ML, USE_EXPERIMENTAL_MODEL, NO_ML_FEATURES, ENABLE_TYPOS, NO_RECENT_FILES_PRIORITIZATION
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
Reference in New Issue
Block a user