mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ML in SE: Ensure all names follow FUS-convention (IJPL-202712)
GitOrigin-RevId: e046800b339c536a47dd0db675217e8a07a9146c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
55d053a213
commit
5351c38d9f
+28
-27
@@ -159,49 +159,50 @@ object SearchEverywhereMLStatisticsCollector : CounterUsagesCollector() {
|
||||
}
|
||||
}
|
||||
|
||||
internal val GROUP = EventLogGroup("mlse.log", 126, MLSE_RECORDER_ID)
|
||||
internal val GROUP = EventLogGroup("mlse.log", 127, MLSE_RECORDER_ID,
|
||||
"ML in Search Everywhere Log Group")
|
||||
|
||||
internal val IS_INTERNAL = EventFields.Boolean("isInternal")
|
||||
private val ORDER_BY_ML_GROUP = EventFields.Boolean("orderByMl")
|
||||
internal val EXPERIMENT_GROUP = EventFields.Int("experimentGroup")
|
||||
internal val EXPERIMENT_VERSION = EventFields.Int("experimentVersion")
|
||||
private val FORCE_EXPERIMENT_GROUP = EventFields.Boolean("isForceExperiment")
|
||||
internal val IS_INTERNAL = EventFields.Boolean("is_internal")
|
||||
private val ORDER_BY_ML_GROUP = EventFields.Boolean("order_by_ml")
|
||||
internal val EXPERIMENT_GROUP = EventFields.Int("experiment_group")
|
||||
internal val EXPERIMENT_VERSION = EventFields.Int("experiment_version")
|
||||
private val FORCE_EXPERIMENT_GROUP = EventFields.Boolean("is_force_experiment")
|
||||
|
||||
@VisibleForTesting
|
||||
internal val SESSION_DURATION = EventFields.Int("sessionDuration", "Duration of the Search Everywhere session in ms")
|
||||
private val TIME_TO_FIRST_RESULT_DATA_KEY = EventFields.Int("timeToFirstResult")
|
||||
internal val SESSION_DURATION = EventFields.Int("session_duration", "Duration of the Search Everywhere session in ms")
|
||||
private val TIME_TO_FIRST_RESULT_DATA_KEY = EventFields.Int("time_to_first_result")
|
||||
|
||||
// context fields
|
||||
private val IS_PROJECT_OPEN = EventFields.Boolean("isProjectOpen")
|
||||
private val IS_PROJECT_DISPOSED_KEY = EventFields.Boolean("projectDisposed")
|
||||
internal val SE_TAB_ID_KEY = EventFields.String("seTabId", ALLOWED_CONTRIBUTOR_ID_LIST)
|
||||
internal val SEARCH_START_TIME_KEY = EventFields.Long("startTime")
|
||||
internal val REBUILD_REASON_KEY = EventFields.Enum<SearchRestartReason>("rebuildReason")
|
||||
internal val SESSION_ID = EventFields.Int("sessionId")
|
||||
internal val SEARCH_INDEX_DATA_KEY = EventFields.Int("searchIndex")
|
||||
private val IS_PROJECT_OPEN = EventFields.Boolean("is_project_open")
|
||||
private val IS_PROJECT_DISPOSED_KEY = EventFields.Boolean("project_disposed")
|
||||
internal val SE_TAB_ID_KEY = EventFields.String("se_tab_id", ALLOWED_CONTRIBUTOR_ID_LIST)
|
||||
internal val SEARCH_START_TIME_KEY = EventFields.Long("start_time")
|
||||
internal val REBUILD_REASON_KEY = EventFields.Enum<SearchRestartReason>("rebuild_reason")
|
||||
internal val SESSION_ID = EventFields.Int("session_id")
|
||||
internal val SEARCH_INDEX_DATA_KEY = EventFields.Int("search_index")
|
||||
|
||||
private val TOTAL_NUMBER_OF_ITEMS_DATA_KEY = EventFields.Int("totalItems")
|
||||
private val TOTAL_NUMBER_OF_ITEMS_DATA_KEY = EventFields.Int("total_items")
|
||||
|
||||
internal val SELECTED_INDEX = EventFields.Int("selectedIndex", "Selected index (0-based) of the item")
|
||||
internal val SELECTED_INDEX = EventFields.Int("selected_index", "Selected index (0-based) of the item")
|
||||
|
||||
@VisibleForTesting
|
||||
val SELECTED_ELEMENTS_DATA_KEY: IntListEventField = EventFields.IntList("selectedIds")
|
||||
val SELECTED_ELEMENTS_DATA_KEY: IntListEventField = EventFields.IntList("selected_ids")
|
||||
|
||||
private val IS_MIXED_LIST = EventFields.Boolean("isMixedList")
|
||||
private val IS_MIXED_LIST = EventFields.Boolean("is_mixed_list")
|
||||
|
||||
// item fields
|
||||
private val SEARCH_STATE_FEATURES_DATA_KEY =
|
||||
ObjectEventField("searchStateFeatures", *SearchEverywhereStateFeaturesProvider.getFields().toTypedArray())
|
||||
ObjectEventField("search_state_features", *SearchEverywhereStateFeaturesProvider.getFields().toTypedArray())
|
||||
|
||||
@VisibleForTesting
|
||||
val ID_KEY: IntEventField = EventFields.Int("id")
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
internal val ACTION_ID_KEY = ActionsEventLogGroup.ActioID("actionId")
|
||||
internal val ACTION_ID_KEY = ActionsEventLogGroup.ActioID("action_id")
|
||||
|
||||
@VisibleForTesting
|
||||
val FEATURES_DATA_KEY: ObjectEventField = createFeaturesEventObject()
|
||||
internal val ML_WEIGHT_KEY: DoubleEventField = EventFields.Double("mlWeight")
|
||||
internal val ML_WEIGHT_KEY: DoubleEventField = EventFields.Double("ml_weight")
|
||||
internal val PRIORITY_KEY: IntEventField = EventFields.Int("priority", "The final priority used for sorting elements")
|
||||
internal val CONTRIBUTOR_FEATURES_LIST = ObjectListEventField(
|
||||
"contributors",
|
||||
@@ -218,7 +219,7 @@ object SearchEverywhereMLStatisticsCollector : CounterUsagesCollector() {
|
||||
"Contributor name that provided the element")
|
||||
|
||||
val COLLECTED_RESULTS_DATA_KEY: ObjectListEventField = ObjectListEventField(
|
||||
"collectedItems",
|
||||
"collected_items",
|
||||
ID_KEY, ELEMENT_CONTRIBUTOR, ACTION_ID_KEY,
|
||||
FEATURES_DATA_KEY, ML_WEIGHT_KEY, PRIORITY_KEY,
|
||||
)
|
||||
@@ -226,7 +227,7 @@ object SearchEverywhereMLStatisticsCollector : CounterUsagesCollector() {
|
||||
private val CLASSES_WITHOUT_KEY_PROVIDERS_FIELD = ClassListEventField("unsupported_classes")
|
||||
|
||||
// region Events
|
||||
internal val SESSION_STARTED: VarargEventId = GROUP.registerVarargEvent("sessionStarted",
|
||||
internal val SESSION_STARTED: VarargEventId = GROUP.registerVarargEvent("session.started",
|
||||
"An event denoting a start of Search Everywhere session",
|
||||
SESSION_ID, IS_PROJECT_OPEN,
|
||||
SE_TAB_ID_KEY, EXPERIMENT_GROUP, EXPERIMENT_VERSION,
|
||||
@@ -236,7 +237,7 @@ object SearchEverywhereMLStatisticsCollector : CounterUsagesCollector() {
|
||||
IS_MIXED_LIST,
|
||||
*SearchEverywhereContextFeaturesProvider.getContextFields().toTypedArray())
|
||||
|
||||
internal val STATE_CHANGED: VarargEventId = GROUP.registerVarargEvent("stateChanged",
|
||||
internal val STATE_CHANGED: VarargEventId = GROUP.registerVarargEvent("state.changed",
|
||||
"An event denoting change of the search state",
|
||||
SESSION_ID, SEARCH_INDEX_DATA_KEY,
|
||||
ORDER_BY_ML_GROUP,
|
||||
@@ -244,13 +245,13 @@ object SearchEverywhereMLStatisticsCollector : CounterUsagesCollector() {
|
||||
TIME_TO_FIRST_RESULT_DATA_KEY, REBUILD_REASON_KEY,
|
||||
SEARCH_STATE_FEATURES_DATA_KEY, COLLECTED_RESULTS_DATA_KEY,
|
||||
CONTRIBUTOR_FEATURES_LIST)
|
||||
internal val ITEM_SELECTED: VarargEventId = GROUP.registerVarargEvent("itemSelected",
|
||||
internal val ITEM_SELECTED: VarargEventId = GROUP.registerVarargEvent("item.selected",
|
||||
"An event denoting selection of an item from search results",
|
||||
SESSION_ID, SEARCH_INDEX_DATA_KEY,
|
||||
SELECTED_INDEX)
|
||||
|
||||
@VisibleForTesting
|
||||
val SESSION_FINISHED: VarargEventId = GROUP.registerVarargEvent("sessionFinished",
|
||||
val SESSION_FINISHED: VarargEventId = GROUP.registerVarargEvent("session.finished",
|
||||
"An event denoting finish of a session and closing of a popup",
|
||||
SESSION_ID,
|
||||
SESSION_DURATION, SE_TAB_ID_KEY)
|
||||
|
||||
+14
-14
@@ -31,21 +31,21 @@ import com.intellij.usages.impl.ScopeRuleValidator
|
||||
|
||||
internal class CoreStateFeaturesProvider : SearchEverywhereStateFeaturesProvider {
|
||||
object Fields {
|
||||
val QUERY_LENGTH_DATA_KEY = EventFields.Int("queryLength")
|
||||
val IS_EMPTY_QUERY_DATA_KEY = EventFields.Boolean("isEmptyQuery")
|
||||
val QUERY_CONTAINS_PATH_DATA_KEY = EventFields.Boolean("queryContainsPath")
|
||||
val QUERY_CONTAINS_COMMAND_CHAR_DATA_KEY = EventFields.Boolean("queryContainsCommandChar")
|
||||
val QUERY_CONTAINS_SPACES_DATA_KEY = EventFields.Boolean("queryContainsSpaces")
|
||||
val QUERY_IS_CAMEL_CASE_DATA_KEY = EventFields.Boolean("queryIsCamelCase")
|
||||
val QUERY_CONTAINS_ABBREVIATIONS_DATA_KEY = EventFields.Boolean("queryContainsAbbreviations")
|
||||
val QUERY_IS_ALL_UPPERCASE_DATA_KEY = EventFields.Boolean("queryIsAllUppercase")
|
||||
val IS_DUMB_MODE = EventFields.Boolean("isDumbMode")
|
||||
val SEARCH_SCOPE_DATA_KEY = EventFields.StringValidatedByCustomRule("searchScope", ScopeRuleValidator::class.java)
|
||||
val IS_SEARCH_EVERYWHERE_DATA_KEY = EventFields.Boolean("isSearchEverywhere")
|
||||
val QUERY_LENGTH_DATA_KEY = EventFields.Int("query_length")
|
||||
val IS_EMPTY_QUERY_DATA_KEY = EventFields.Boolean("is_empty_query")
|
||||
val QUERY_CONTAINS_PATH_DATA_KEY = EventFields.Boolean("query_contains_path")
|
||||
val QUERY_CONTAINS_COMMAND_CHAR_DATA_KEY = EventFields.Boolean("query_contains_command_char")
|
||||
val QUERY_CONTAINS_SPACES_DATA_KEY = EventFields.Boolean("query_contains_spaces")
|
||||
val QUERY_IS_CAMEL_CASE_DATA_KEY = EventFields.Boolean("query_is_camel_case")
|
||||
val QUERY_CONTAINS_ABBREVIATIONS_DATA_KEY = EventFields.Boolean("query_contains_abbreviations")
|
||||
val QUERY_IS_ALL_UPPERCASE_DATA_KEY = EventFields.Boolean("query_is_all_uppercase")
|
||||
val IS_DUMB_MODE = EventFields.Boolean("is_dumb_mode")
|
||||
val SEARCH_SCOPE_DATA_KEY = EventFields.StringValidatedByCustomRule("search_scope", ScopeRuleValidator::class.java)
|
||||
val IS_SEARCH_EVERYWHERE_DATA_KEY = EventFields.Boolean("is_search_everywhere")
|
||||
|
||||
val IS_CASE_SENSITIVE = EventFields.Boolean("isCaseSensitive")
|
||||
val IS_WHOLE_WORDS_ONLY = EventFields.Boolean("isWholeWordsOnly")
|
||||
val IS_REGULAR_EXPRESSIONS = EventFields.Boolean("isRegularExpressions")
|
||||
val IS_CASE_SENSITIVE = EventFields.Boolean("is_case_sensitive")
|
||||
val IS_WHOLE_WORDS_ONLY = EventFields.Boolean("is_whole_words_only")
|
||||
val IS_REGULAR_EXPRESSIONS = EventFields.Boolean("is_regular_expressions")
|
||||
}
|
||||
|
||||
override val fields: List<EventField<*>> = listOf(
|
||||
|
||||
+13
-13
@@ -35,17 +35,17 @@ internal abstract class GlobalStatisticsFields(
|
||||
}
|
||||
|
||||
internal class ContributorsGlobalStatisticsFields : GlobalStatisticsFields(
|
||||
globalEventCountFieldName = "globalSelections",
|
||||
globalEventCountToMaxFieldName = "globalSelectionsToMax",
|
||||
usersRatioFieldName = "usersRatio",
|
||||
eventPerUserRatioFieldName = "selectionsPerUserRatio"
|
||||
globalEventCountFieldName = "global_selections",
|
||||
globalEventCountToMaxFieldName = "global_selections_to_max",
|
||||
usersRatioFieldName = "users_ratio",
|
||||
eventPerUserRatioFieldName = "selections_per_user_ratio"
|
||||
)
|
||||
|
||||
internal class ActionsGlobalStatisticsFields(version: Int? = null) : GlobalStatisticsFields(
|
||||
globalEventCountFieldName = "globalUsage${versionSuffix(version)}",
|
||||
globalEventCountToMaxFieldName = "globalUsageToMax${versionSuffix(version)}",
|
||||
usersRatioFieldName = "usersRatio${versionSuffix(version)}",
|
||||
eventPerUserRatioFieldName = "usagesPerUserRatio${versionSuffix(version)}"
|
||||
globalEventCountFieldName = "global_usage${versionSuffix(version)}",
|
||||
globalEventCountToMaxFieldName = "global_usage_to_max${versionSuffix(version)}",
|
||||
usersRatioFieldName = "users_ratio${versionSuffix(version)}",
|
||||
eventPerUserRatioFieldName = "usages_per_user_ratio${versionSuffix(version)}"
|
||||
)
|
||||
|
||||
internal abstract class GlobalStatisticsContextFields(
|
||||
@@ -66,15 +66,15 @@ internal abstract class GlobalStatisticsContextFields(
|
||||
}
|
||||
|
||||
internal class ActionsGlobalStatisticsContextFields(version: Int? = null) : GlobalStatisticsContextFields(
|
||||
globalMaxEventCountFieldName = "globalMaxUsage${versionSuffix(version)}",
|
||||
globalMinEventCountFieldName = "globalMinUsage${versionSuffix(version)}"
|
||||
globalMaxEventCountFieldName = "global_max_usage${versionSuffix(version)}",
|
||||
globalMinEventCountFieldName = "global_min_usage${versionSuffix(version)}"
|
||||
)
|
||||
|
||||
internal class ContributorsGlobalStatisticsContextFields : GlobalStatisticsContextFields(
|
||||
globalMaxEventCountFieldName = "globalMaxSelection",
|
||||
globalMinEventCountFieldName = "globalMinSelection"
|
||||
globalMaxEventCountFieldName = "global_max_selection",
|
||||
globalMinEventCountFieldName = "global_min_selection"
|
||||
)
|
||||
|
||||
private fun versionSuffix(version: Int?): String {
|
||||
return version?.let { "V$it" } ?: ""
|
||||
return version?.let { "_v$it" } ?: ""
|
||||
}
|
||||
+24
-24
@@ -53,38 +53,38 @@ import com.intellij.util.Time
|
||||
internal class SearchEverywhereActionFeaturesProvider :
|
||||
SearchEverywhereElementFeaturesProvider(ActionSearchEverywhereContributor::class.java, TopHitSEContributor::class.java) {
|
||||
object Fields {
|
||||
internal val IS_ACTION_DATA_KEY = EventFields.Boolean("isAction")
|
||||
internal val IS_TOGGLE_ACTION_DATA_KEY = EventFields.Boolean("isToggleAction")
|
||||
internal val IS_EDITOR_ACTION = EventFields.Boolean("isEditorAction")
|
||||
internal val IS_SEARCH_ACTION = EventFields.Boolean("isSearchAction")
|
||||
internal val IS_ACTION_DATA_KEY = EventFields.Boolean("is_action")
|
||||
internal val IS_TOGGLE_ACTION_DATA_KEY = EventFields.Boolean("is_toggle_action")
|
||||
internal val IS_EDITOR_ACTION = EventFields.Boolean("is_editor_action")
|
||||
internal val IS_SEARCH_ACTION = EventFields.Boolean("is_search_action")
|
||||
|
||||
internal val MATCH_MODE_KEY = EventFields.Enum<MatchMode>("matchMode")
|
||||
internal val TEXT_LENGTH_KEY = EventFields.Int("textLength")
|
||||
internal val IS_GROUP_KEY = EventFields.Boolean("isGroup")
|
||||
internal val GROUP_LENGTH_KEY = EventFields.Int("groupLength")
|
||||
internal val HAS_ICON_KEY = EventFields.Boolean("withIcon")
|
||||
internal val PLUGIN_TYPE = EventFields.StringValidatedByEnum("pluginType", "plugin_type")
|
||||
internal val PLUGIN_ID = EventFields.StringValidatedByCustomRule("pluginId", PluginIdRuleValidator::class.java)
|
||||
internal val MATCH_MODE_KEY = EventFields.Enum<MatchMode>("match_mode")
|
||||
internal val TEXT_LENGTH_KEY = EventFields.Int("text_length")
|
||||
internal val IS_GROUP_KEY = EventFields.Boolean("is_group")
|
||||
internal val GROUP_LENGTH_KEY = EventFields.Int("group_length")
|
||||
internal val HAS_ICON_KEY = EventFields.Boolean("with_icon")
|
||||
internal val PLUGIN_TYPE = EventFields.StringValidatedByEnum("plugin_type", "plugin_type")
|
||||
internal val PLUGIN_ID = EventFields.StringValidatedByCustomRule("plugin_id", PluginIdRuleValidator::class.java)
|
||||
|
||||
internal val GLOBAL_STATISTICS_DEFAULT = ActionsGlobalStatisticsFields(ActionsGlobalSummaryManager.STATISTICS_VERSION)
|
||||
internal val GLOBAL_STATISTICS_UPDATED = ActionsGlobalStatisticsFields(ActionsGlobalSummaryManager.UPDATED_STATISTICS_VERSION)
|
||||
|
||||
|
||||
internal val USAGE = EventFields.Int("usage")
|
||||
internal val USAGE_SE = EventFields.Int("usageSe")
|
||||
internal val USAGE_TO_MAX = EventFields.Double("usageToMax")
|
||||
internal val USAGE_TO_MAX_SE = EventFields.Double("usageToMaxSe")
|
||||
internal val USAGE_SE = EventFields.Int("usage_se")
|
||||
internal val USAGE_TO_MAX = EventFields.Double("usage_to_max")
|
||||
internal val USAGE_TO_MAX_SE = EventFields.Double("usage_to_max_se")
|
||||
|
||||
internal val TIME_SINCE_LAST_USAGE = EventFields.Long("timeSinceLastUsage")
|
||||
internal val TIME_SINCE_LAST_USAGE_SE = EventFields.Long("timeSinceLastUsageSe")
|
||||
internal val WAS_USED_IN_LAST_MINUTE = EventFields.Boolean("wasUsedInLastMinute")
|
||||
internal val WAS_USED_IN_LAST_MINUTE_SE = EventFields.Boolean("wasUsedInLastMinuteSe")
|
||||
internal val WAS_USED_IN_LAST_HOUR = EventFields.Boolean("wasUsedInLastHour")
|
||||
internal val WAS_USED_IN_LAST_HOUR_SE = EventFields.Boolean("wasUsedInLastHourSe")
|
||||
internal val WAS_USED_IN_LAST_DAY = EventFields.Boolean("wasUsedInLastDay")
|
||||
internal val WAS_USED_IN_LAST_DAY_SE = EventFields.Boolean("wasUsedInLastDaySe")
|
||||
internal val WAS_USED_IN_LAST_MONTH = EventFields.Boolean("wasUsedInLastMonth")
|
||||
internal val WAS_USED_IN_LAST_MONTH_SE = EventFields.Boolean("wasUsedInLastMonthSe")
|
||||
internal val TIME_SINCE_LAST_USAGE = EventFields.Long("time_since_last_usage")
|
||||
internal val TIME_SINCE_LAST_USAGE_SE = EventFields.Long("time_since_last_usage_se")
|
||||
internal val WAS_USED_IN_LAST_MINUTE = EventFields.Boolean("was_used_in_last_minute")
|
||||
internal val WAS_USED_IN_LAST_MINUTE_SE = EventFields.Boolean("was_used_in_last_minute_se")
|
||||
internal val WAS_USED_IN_LAST_HOUR = EventFields.Boolean("was_used_in_last_hour")
|
||||
internal val WAS_USED_IN_LAST_HOUR_SE = EventFields.Boolean("was_used_in_last_hour_se")
|
||||
internal val WAS_USED_IN_LAST_DAY = EventFields.Boolean("was_used_in_last_day")
|
||||
internal val WAS_USED_IN_LAST_DAY_SE = EventFields.Boolean("was_used_in_last_day_se")
|
||||
internal val WAS_USED_IN_LAST_MONTH = EventFields.Boolean("was_used_in_last_month")
|
||||
internal val WAS_USED_IN_LAST_MONTH_SE = EventFields.Boolean("was_used_in_last_month_se")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ import org.jetbrains.annotations.ApiStatus
|
||||
@ApiStatus.Internal
|
||||
class SearchEverywhereClassFeaturesProvider : SearchEverywhereElementFeaturesProvider(ClassSearchEverywhereContributor::class.java) {
|
||||
object Fields {
|
||||
val IS_DEPRECATED = EventFields.Boolean("isDeprecated")
|
||||
val IS_DEPRECATED = EventFields.Boolean("is_deprecated")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+25
-25
@@ -62,39 +62,39 @@ class SearchEverywhereClassOrFileFeaturesProvider : SearchEverywhereElementFeatu
|
||||
RecentFilesSEContributor::class.java
|
||||
) {
|
||||
object Fields {
|
||||
val IS_ACCESSIBLE_FROM_MODULE = EventFields.Boolean("isAccessibleFromModule")
|
||||
val IS_ACCESSIBLE_FROM_MODULE = EventFields.Boolean("is_accessible_from_module")
|
||||
|
||||
val IS_SAME_MODULE_DATA_KEY = EventFields.Boolean("isSameModule")
|
||||
val IS_SAME_MODULE_DATA_KEY = EventFields.Boolean("is_same_module")
|
||||
|
||||
val DIRECTORY_DEPTH_DATA_KEY = EventFields.Int("directoryDepth")
|
||||
val IS_SAME_FILETYPE_AS_OPENED_FILE_DATA_KEY = EventFields.Boolean("isSameFileTypeAsOpenedFile")
|
||||
val DIRECTORY_DEPTH_DATA_KEY = EventFields.Int("directory_depth")
|
||||
val IS_SAME_FILETYPE_AS_OPENED_FILE_DATA_KEY = EventFields.Boolean("is_same_file_type_as_opened_file")
|
||||
|
||||
val IS_IN_SOURCE_DATA_KEY = EventFields.Boolean("isInSource")
|
||||
val IS_IN_TEST_SOURCES_DATA_KEY = EventFields.Boolean("isInTestSources")
|
||||
val IS_IN_LIBRARY_DATA_KEY = EventFields.Boolean("isFromLibrary")
|
||||
val IS_EXCLUDED_DATA_KEY = EventFields.Boolean("isInExcluded")
|
||||
val IS_IN_SOURCE_DATA_KEY = EventFields.Boolean("is_in_source")
|
||||
val IS_IN_TEST_SOURCES_DATA_KEY = EventFields.Boolean("is_in_test_sources")
|
||||
val IS_IN_LIBRARY_DATA_KEY = EventFields.Boolean("is_in_library")
|
||||
val IS_EXCLUDED_DATA_KEY = EventFields.Boolean("is_in_excluded")
|
||||
|
||||
val FILETYPE_USAGE_RATIO_DATA_KEY = EventFields.Double("fileTypeUsageRatio")
|
||||
val FILETYPE_USAGE_RATIO_TO_MAX_DATA_KEY = EventFields.Double("fileTypeUsageRatioToMax")
|
||||
val FILETYPE_USAGE_RATIO_TO_MIN_DATA_KEY = EventFields.Double("fileTypeUsageRatioToMin")
|
||||
val TIME_SINCE_LAST_FILETYPE_USAGE_DATA_KEY = EventFields.Long("timeSinceLastFileTypeUsage")
|
||||
val FILETYPE_USED_IN_LAST_MINUTE_DATA_KEY = EventFields.Boolean("fileTypeUsedInLastMinute")
|
||||
val FILETYPE_USED_IN_LAST_HOUR_DATA_KEY = EventFields.Boolean("fileTypeUsedInLastHour")
|
||||
val FILETYPE_USED_IN_LAST_DAY_DATA_KEY = EventFields.Boolean("fileTypeUsedInLastDay")
|
||||
val FILETYPE_USED_IN_LAST_MONTH_DATA_KEY = EventFields.Boolean("fileTypeUsedInLastMonth")
|
||||
val FILETYPE_USAGE_RATIO_DATA_KEY = EventFields.Double("file_type_usage_ratio")
|
||||
val FILETYPE_USAGE_RATIO_TO_MAX_DATA_KEY = EventFields.Double("file_type_usage_ratio_to_max")
|
||||
val FILETYPE_USAGE_RATIO_TO_MIN_DATA_KEY = EventFields.Double("file_type_usage_ratio_to_min")
|
||||
val TIME_SINCE_LAST_FILETYPE_USAGE_DATA_KEY = EventFields.Long("time_since_last_file_type_usage")
|
||||
val FILETYPE_USED_IN_LAST_MINUTE_DATA_KEY = EventFields.Boolean("file_type_used_in_last_minute")
|
||||
val FILETYPE_USED_IN_LAST_HOUR_DATA_KEY = EventFields.Boolean("file_type_used_in_last_hour")
|
||||
val FILETYPE_USED_IN_LAST_DAY_DATA_KEY = EventFields.Boolean("file_type_used_in_last_day")
|
||||
val FILETYPE_USED_IN_LAST_MONTH_DATA_KEY = EventFields.Boolean("file_type_used_in_last_month")
|
||||
|
||||
val RECENT_INDEX_DATA_KEY = EventFields.Int("recentFilesIndex")
|
||||
val PREDICTION_SCORE_DATA_KEY = EventFields.Double("predictionScore")
|
||||
val RECENT_INDEX_DATA_KEY = EventFields.Int("recent_files_index")
|
||||
val PREDICTION_SCORE_DATA_KEY = EventFields.Double("prediction_score")
|
||||
|
||||
val IS_OPENED_DATA_KEY = EventFields.Boolean("isOpened")
|
||||
val IS_OPENED_DATA_KEY = EventFields.Boolean("is_opened")
|
||||
|
||||
val TIME_SINCE_LAST_MODIFICATION_DATA_KEY = EventFields.Long("timeSinceLastModification")
|
||||
val WAS_MODIFIED_IN_LAST_MINUTE_DATA_KEY = EventFields.Boolean("wasModifiedInLastMinute")
|
||||
val WAS_MODIFIED_IN_LAST_HOUR_DATA_KEY = EventFields.Boolean("wasModifiedInLastHour")
|
||||
val WAS_MODIFIED_IN_LAST_DAY_DATA_KEY = EventFields.Boolean("wasModifiedInLastDay")
|
||||
val WAS_MODIFIED_IN_LAST_MONTH_DATA_KEY = EventFields.Boolean("wasModifiedInLastMonth")
|
||||
val TIME_SINCE_LAST_MODIFICATION_DATA_KEY = EventFields.Long("time_since_last_modification")
|
||||
val WAS_MODIFIED_IN_LAST_MINUTE_DATA_KEY = EventFields.Boolean("was_modified_in_last_minute")
|
||||
val WAS_MODIFIED_IN_LAST_HOUR_DATA_KEY = EventFields.Boolean("was_modified_in_last_hour")
|
||||
val WAS_MODIFIED_IN_LAST_DAY_DATA_KEY = EventFields.Boolean("was_modified_in_last_day")
|
||||
val WAS_MODIFIED_IN_LAST_MONTH_DATA_KEY = EventFields.Boolean("was_modified_in_last_month")
|
||||
|
||||
val ALL_INITIAL_LETTERS_MATCH_DATA_KEY = EventFields.Boolean("allInitialLettersMatch")
|
||||
val ALL_INITIAL_LETTERS_MATCH_DATA_KEY = EventFields.Boolean("all_initial_letters_match")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+7
-7
@@ -17,14 +17,14 @@ import com.intellij.searchEverywhereMl.ranking.core.features.statistician.Search
|
||||
|
||||
internal class SearchEverywhereCommonFeaturesProvider : SearchEverywhereElementFeaturesProvider() {
|
||||
object Fields {
|
||||
internal val PRIORITY_DATA_KEY = EventFields.Int("heuristicPriority")
|
||||
internal val PRIORITY_DATA_KEY = EventFields.Int("heuristic_priority")
|
||||
|
||||
internal val STATISTICIAN_USE_COUNT_DATA_KEY = EventFields.Int("statUseCount")
|
||||
internal val STATISTICIAN_IS_MOST_POPULAR_DATA_KEY = EventFields.Boolean("statIsMostPopular")
|
||||
internal val STATISTICIAN_RECENCY_DATA_KEY = EventFields.Int("statRecency")
|
||||
internal val STATISTICIAN_IS_MOST_RECENT_DATA_KEY = EventFields.Boolean("statIsMostRecent")
|
||||
internal val IS_SPELL_CHECKED_DATA_KEY = EventFields.Boolean("isSpellChecked")
|
||||
internal val CORRECTION_CONFIDENCE_DATA_KEY = EventFields.Double("correctionConfidence")
|
||||
internal val STATISTICIAN_USE_COUNT_DATA_KEY = EventFields.Int("stat_use_count")
|
||||
internal val STATISTICIAN_IS_MOST_POPULAR_DATA_KEY = EventFields.Boolean("stat_is_most_popular")
|
||||
internal val STATISTICIAN_RECENCY_DATA_KEY = EventFields.Int("stat_recency")
|
||||
internal val STATISTICIAN_IS_MOST_RECENT_DATA_KEY = EventFields.Boolean("stat_is_most_recent")
|
||||
internal val IS_SPELL_CHECKED_DATA_KEY = EventFields.Boolean("is_spell_checked")
|
||||
internal val CORRECTION_CONFIDENCE_DATA_KEY = EventFields.Double("correction_confidence")
|
||||
}
|
||||
|
||||
override fun isContributorSupported(contributorId: String): Boolean = true
|
||||
|
||||
+7
-7
@@ -17,10 +17,10 @@ import com.intellij.searchEverywhereMl.ranking.core.features.statistician.Contri
|
||||
|
||||
internal class SearchEverywhereContextFeaturesProvider {
|
||||
companion object {
|
||||
internal val LOCAL_MAX_USAGE_COUNT_KEY = EventFields.Int("maxUsage")
|
||||
internal val LOCAL_MIN_USAGE_COUNT_KEY = EventFields.Int("minUsage")
|
||||
internal val LOCAL_MAX_USAGE_SE_COUNT_KEY = EventFields.Int("maxUsageSE")
|
||||
internal val LOCAL_MIN_USAGE_SE_COUNT_KEY = EventFields.Int("minUsageSE")
|
||||
internal val LOCAL_MAX_USAGE_COUNT_KEY = EventFields.Int("max_usage")
|
||||
internal val LOCAL_MIN_USAGE_COUNT_KEY = EventFields.Int("min_usage")
|
||||
internal val LOCAL_MAX_USAGE_SE_COUNT_KEY = EventFields.Int("max_usage_se")
|
||||
internal val LOCAL_MIN_USAGE_SE_COUNT_KEY = EventFields.Int("min_usage_se")
|
||||
|
||||
private val ACTIONS_GLOBAL_STATISTICS_CONTEXT_DEFAULT = ActionsGlobalStatisticsContextFields(ActionsGlobalSummaryManager.STATISTICS_VERSION)
|
||||
private val ACTIONS_GLOBAL_STATISTICS_CONTEXT_UPDATED = ActionsGlobalStatisticsContextFields(ActionsGlobalSummaryManager.UPDATED_STATISTICS_VERSION)
|
||||
@@ -28,9 +28,9 @@ internal class SearchEverywhereContextFeaturesProvider {
|
||||
private val CONTRIBUTORS_LOCAL_STATISTICS_CONTEXT = ContributorsLocalStatisticsContextFields()
|
||||
|
||||
|
||||
internal val OPEN_FILE_TYPES_KEY = EventFields.StringListValidatedByCustomRule("openFileTypes", FileTypeUsagesCollector.ValidationRule::class.java)
|
||||
internal val NUMBER_OF_OPEN_EDITORS_KEY = EventFields.Int("numberOfOpenEditors")
|
||||
internal val IS_SINGLE_MODULE_PROJECT = EventFields.Boolean("isSingleModuleProject")
|
||||
internal val OPEN_FILE_TYPES_KEY = EventFields.StringListValidatedByCustomRule("open_file_types", FileTypeUsagesCollector.ValidationRule::class.java)
|
||||
internal val NUMBER_OF_OPEN_EDITORS_KEY = EventFields.Int("number_of_open_editors")
|
||||
internal val IS_SINGLE_MODULE_PROJECT = EventFields.Boolean("is_single_module_project")
|
||||
|
||||
internal fun getContextFields(): List<EventField<*>> {
|
||||
return buildList {
|
||||
|
||||
+7
-7
@@ -15,13 +15,13 @@ import com.intellij.searchEverywhereMl.ranking.core.features.statistician.Contri
|
||||
import com.intellij.searchEverywhereMl.ranking.core.features.statistician.getContributorStatistics
|
||||
|
||||
internal object SearchEverywhereContributorFeaturesProvider {
|
||||
val CONTRIBUTOR_INFO_ID = EventFields.String("contributorId", ALLOWED_CONTRIBUTOR_ID_LIST)
|
||||
val CONTRIBUTOR_PRIORITY = EventFields.Int("contributorPriority")
|
||||
val CONTRIBUTOR_WEIGHT = EventFields.Int("contributorWeight")
|
||||
val CONTRIBUTOR_IS_MOST_POPULAR = EventFields.Boolean("contributorIsMostPopular")
|
||||
val CONTRIBUTOR_POPULARITY_INDEX = EventFields.Int("contributorPopularityIndex")
|
||||
val IS_ESSENTIAL_CONTRIBUTOR = EventFields.Boolean("contributorIsEssential")
|
||||
val ESSENTIAL_CONTRIBUTOR_PREDICTION = EventFields.Float("contributorIsEssentialPrediction")
|
||||
val CONTRIBUTOR_INFO_ID = EventFields.String("contributor_id", ALLOWED_CONTRIBUTOR_ID_LIST)
|
||||
val CONTRIBUTOR_PRIORITY = EventFields.Int("contributor_priority")
|
||||
val CONTRIBUTOR_WEIGHT = EventFields.Int("contributor_weight")
|
||||
val CONTRIBUTOR_IS_MOST_POPULAR = EventFields.Boolean("contributor_is_most_popular")
|
||||
val CONTRIBUTOR_POPULARITY_INDEX = EventFields.Int("contributor_popularity_index")
|
||||
val IS_ESSENTIAL_CONTRIBUTOR = EventFields.Boolean("contributor_is_essential")
|
||||
val ESSENTIAL_CONTRIBUTOR_PREDICTION = EventFields.Float("contributor_is_essential_prediction")
|
||||
|
||||
private val LOCAL_STATISTICS = ContributorsLocalStatisticsFields()
|
||||
private val GLOBAL_STATISTICS = ContributorsGlobalStatisticsFields()
|
||||
|
||||
+61
-61
@@ -31,46 +31,48 @@ abstract class SearchEverywhereElementFeaturesProvider(private val supportedCont
|
||||
}
|
||||
}
|
||||
|
||||
internal val NAME_LENGTH = EventFields.RoundedInt("nameLength")
|
||||
internal val ML_SCORE_KEY = EventFields.Double("mlScore")
|
||||
internal val SIMILARITY_SCORE = EventFields.Double("similarityScore")
|
||||
internal val IS_SEMANTIC_ONLY = EventFields.Boolean("isSemanticOnly")
|
||||
internal val BUFFERED_TIMESTAMP = EventFields.Long("bufferedTimestamp")
|
||||
internal val NAME_LENGTH = EventFields.RoundedInt("name_length")
|
||||
internal val ML_SCORE_KEY = EventFields.Double("ml_score")
|
||||
internal val SIMILARITY_SCORE = EventFields.Double("similarity_score")
|
||||
internal val IS_SEMANTIC_ONLY = EventFields.Boolean("is_semantic_only")
|
||||
internal val BUFFERED_TIMESTAMP = EventFields.Long("buffered_timestamp")
|
||||
|
||||
internal val PREFIX_SAME_START_COUNT = EventFields.Int("prefix_same_start_count")
|
||||
internal val PREFIX_GREEDY_SCORE = EventFields.Double("prefix_greedy_score")
|
||||
internal val PREFIX_GREEDY_WITH_CASE_SCORE = EventFields.Double("prefix_greedy_with_case_score")
|
||||
internal val PREFIX_MATCHED_WORDS_SCORE = EventFields.Double("prefix_matched_words_score")
|
||||
internal val PREFIX_MATCHED_WORDS_RELATIVE = EventFields.Double("prefix_matched_words_relative")
|
||||
internal val PREFIX_MATCHED_WORDS_WITH_CASE_SCORE = EventFields.Double("prefix_matched_words_with_case_score")
|
||||
internal val PREFIX_MATCHED_WORDS_WITH_CASE_RELATIVE = EventFields.Double("prefix_matched_words_with_case_relative")
|
||||
internal val PREFIX_SKIPPED_WORDS = EventFields.Int("prefix_skipped_words")
|
||||
internal val PREFIX_MATCHING_TYPE = EventFields.String(
|
||||
"prefix_matching_type", PrefixMatchingType.entries.map { it.name }
|
||||
)
|
||||
internal val PREFIX_EXACT = EventFields.Boolean("prefix_exact")
|
||||
internal val PREFIX_MATCHED_LAST_WORD = EventFields.Boolean("prefix_matched_last_word")
|
||||
|
||||
internal val prefixMatchingNameFeatureToField = hashMapOf<String, EventField<*>>(
|
||||
"prefix_same_start_count" to EventFields.Int("${PrefixMatchingUtil.baseName}SameStartCount"),
|
||||
"prefix_greedy_score" to EventFields.Double("${PrefixMatchingUtil.baseName}GreedyScore"),
|
||||
"prefix_greedy_with_case_score" to EventFields.Double("${PrefixMatchingUtil.baseName}GreedyWithCaseScore"),
|
||||
"prefix_matched_words_score" to EventFields.Double("${PrefixMatchingUtil.baseName}MatchedWordsScore"),
|
||||
"prefix_matched_words_relative" to EventFields.Double("${PrefixMatchingUtil.baseName}MatchedWordsRelative"),
|
||||
"prefix_matched_words_with_case_score" to EventFields.Double("${PrefixMatchingUtil.baseName}MatchedWordsWithCaseScore"),
|
||||
"prefix_matched_words_with_case_relative" to EventFields.Double("${PrefixMatchingUtil.baseName}MatchedWordsWithCaseRelative"),
|
||||
"prefix_skipped_words" to EventFields.Int("${PrefixMatchingUtil.baseName}SkippedWords"),
|
||||
"prefix_matching_type" to EventFields.String(
|
||||
"${PrefixMatchingUtil.baseName}MatchingType", PrefixMatchingType.entries.map { it.name }
|
||||
),
|
||||
"prefix_exact" to EventFields.Boolean("${PrefixMatchingUtil.baseName}Exact"),
|
||||
"prefix_matched_last_word" to EventFields.Boolean("${PrefixMatchingUtil.baseName}MatchedLastWord"),
|
||||
)
|
||||
internal val wholeMatchingNameFeatureToField = hashMapOf<String, EventField<*>>(
|
||||
"levenshtein_distance" to EventFields.Double("${WholeTextMatchUtil.baseName}LevenshteinDistance",
|
||||
"Levenshtein distance normalized by query lengths"),
|
||||
"levenshtein_distance_case_insensitive" to
|
||||
EventFields.Double("${WholeTextMatchUtil.baseName}LevenshteinDistanceCaseInsensitive",
|
||||
"Levenshtein distance with case insensitive matching, normalized by query length"),
|
||||
"words_in_query" to EventFields.Int("${WholeTextMatchUtil.baseName}WordsInQuery", "Number of words in the query"),
|
||||
"words_in_element" to EventFields.Int("${WholeTextMatchUtil.baseName}WordsInElement", "Number of words in the element text"),
|
||||
"exactly_matched_words" to EventFields.Int("${WholeTextMatchUtil.baseName}ExactlyMatchedWords")
|
||||
)
|
||||
internal val WHOLE_LEVENSHTEIN_DISTANCE = EventFields.Double("levenshtein_distance",
|
||||
"Levenshtein distance normalized by query lengths")
|
||||
internal val WHOLE_LEVENSHTEIN_DISTANCE_CASE_INSENSITIVE =
|
||||
EventFields.Double("levenshtein_distance_case_insensitive",
|
||||
"Levenshtein distance with case insensitive matching, normalized by query length")
|
||||
internal val WHOLE_WORDS_IN_QUERY = EventFields.Int("words_in_query", "Number of words in the query")
|
||||
internal val WHOLE_WORDS_IN_ELEMENT = EventFields.Int("words_in_element", "Number of words in the element text")
|
||||
internal val WHOLE_EXACTLY_MATCHED_WORDS = EventFields.Int("exactly_matched_words")
|
||||
|
||||
fun getDefaultFields(): List<EventField<*>> {
|
||||
return listOf(NAME_LENGTH, ML_SCORE_KEY, SIMILARITY_SCORE, IS_SEMANTIC_ONLY, BUFFERED_TIMESTAMP) +
|
||||
prefixMatchingNameFeatureToField.values + wholeMatchingNameFeatureToField.values
|
||||
return listOf(
|
||||
NAME_LENGTH, ML_SCORE_KEY, SIMILARITY_SCORE, IS_SEMANTIC_ONLY, BUFFERED_TIMESTAMP,
|
||||
PREFIX_SAME_START_COUNT, PREFIX_GREEDY_SCORE, PREFIX_GREEDY_WITH_CASE_SCORE,
|
||||
PREFIX_MATCHED_WORDS_SCORE, PREFIX_MATCHED_WORDS_RELATIVE, PREFIX_MATCHED_WORDS_WITH_CASE_SCORE,
|
||||
PREFIX_MATCHED_WORDS_WITH_CASE_RELATIVE, PREFIX_SKIPPED_WORDS, PREFIX_MATCHING_TYPE, PREFIX_EXACT,
|
||||
PREFIX_MATCHED_LAST_WORD,
|
||||
WHOLE_LEVENSHTEIN_DISTANCE, WHOLE_LEVENSHTEIN_DISTANCE_CASE_INSENSITIVE,
|
||||
WHOLE_WORDS_IN_QUERY, WHOLE_WORDS_IN_ELEMENT, WHOLE_EXACTLY_MATCHED_WORDS
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
internal fun roundDouble(value: Double): Double {
|
||||
if (!value.isFinite()) return -1.0
|
||||
return round(value * 100000) / 100000
|
||||
@@ -88,12 +90,14 @@ abstract class SearchEverywhereElementFeaturesProvider(private val supportedCont
|
||||
|
||||
abstract fun getFeaturesDeclarations(): List<EventField<*>>
|
||||
|
||||
abstract fun getElementFeatures(element: Any,
|
||||
currentTime: Long,
|
||||
searchQuery: String,
|
||||
elementPriority: Int,
|
||||
cache: FeaturesProviderCache?,
|
||||
correction: SearchEverywhereSpellCheckResult): List<EventPair<*>>
|
||||
abstract fun getElementFeatures(
|
||||
element: Any,
|
||||
currentTime: Long,
|
||||
searchQuery: String,
|
||||
elementPriority: Int,
|
||||
cache: FeaturesProviderCache?,
|
||||
correction: SearchEverywhereSpellCheckResult,
|
||||
): List<EventPair<*>>
|
||||
|
||||
protected fun withUpperBound(value: Int): Int {
|
||||
if (value > 100) return 101
|
||||
@@ -101,23 +105,26 @@ abstract class SearchEverywhereElementFeaturesProvider(private val supportedCont
|
||||
}
|
||||
|
||||
protected fun getNameMatchingFeatures(nameOfFoundElement: String, searchQuery: String): Collection<EventPair<*>> {
|
||||
// For a quicker lookup
|
||||
val nameToFeature = getDefaultFields()
|
||||
.associateBy { it.name }
|
||||
|
||||
return buildList {
|
||||
buildMap {
|
||||
PrefixMatchingUtil.calculateFeatures(nameOfFoundElement, searchQuery, this)
|
||||
|
||||
putAll(
|
||||
WholeTextMatchUtil.calculateFeatures(nameOfFoundElement, searchQuery)
|
||||
)
|
||||
}.map { (featureName, value) ->
|
||||
val field = prefixMatchingNameFeatureToField[featureName]
|
||||
setMatchValueToField(value, field)
|
||||
}.filterNotNull()
|
||||
.forEach {
|
||||
val field = nameToFeature.getValue(featureName)
|
||||
field.tryWith(value)
|
||||
}.forEach {
|
||||
add(it)
|
||||
}
|
||||
|
||||
|
||||
add(NAME_LENGTH.with(nameOfFoundElement.length))
|
||||
|
||||
addAll(WholeTextMatchUtil.calculateFeatures(nameOfFoundElement, searchQuery).map { (key, value) ->
|
||||
setMatchValueToField(value, wholeMatchingNameFeatureToField[key])
|
||||
}.filterNotNull())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,21 +132,14 @@ abstract class SearchEverywhereElementFeaturesProvider(private val supportedCont
|
||||
return searchEverywhereMlRankingService?.getCurrentSession()?.getSearchQueryEmbedding(queryText, split)
|
||||
}
|
||||
|
||||
internal fun setMatchValueToField(matchValue: Any,
|
||||
field: EventField<*>?): EventPair<*>? {
|
||||
if (matchValue is Boolean && field is BooleanEventField) {
|
||||
return field.with(matchValue)
|
||||
fun EventField<*>.tryWith(value: Any): EventPair<*> {
|
||||
return when (this) {
|
||||
is BooleanEventField -> this.with(value as Boolean)
|
||||
is DoubleEventField -> this.with(value as Double)
|
||||
is IntEventField -> this.with(value as Int)
|
||||
is StringEventField -> this.with(value.toString())
|
||||
else -> throw IllegalArgumentException("Could not associate a value with unsupported field type: ${this::class.java}")
|
||||
}
|
||||
else if (matchValue is Double && field is DoubleEventField) {
|
||||
return field.with(roundDouble(matchValue))
|
||||
}
|
||||
else if (matchValue is Int && field is IntEventField) {
|
||||
return field.with(matchValue)
|
||||
}
|
||||
else if (matchValue is Enum<*> && field is StringEventField) {
|
||||
return field.with(matchValue.toString())
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+15
-19
@@ -34,20 +34,20 @@ class SearchEverywhereFileFeaturesProvider
|
||||
: SearchEverywhereElementFeaturesProvider(FileSearchEverywhereContributor::class.java, RecentFilesSEContributor::class.java) {
|
||||
|
||||
object Fields {
|
||||
val FILETYPE_DATA_KEY = EventFields.StringValidatedByCustomRule("fileType", FileTypeUsagesCollector.ValidationRule::class.java)
|
||||
val IS_BOOKMARK_DATA_KEY = EventFields.Boolean("isBookmark")
|
||||
val FILETYPE_DATA_KEY = EventFields.StringValidatedByCustomRule("file_type", FileTypeUsagesCollector.ValidationRule::class.java)
|
||||
val IS_BOOKMARK_DATA_KEY = EventFields.Boolean("is_bookmark")
|
||||
|
||||
val IS_DIRECTORY_DATA_KEY = EventFields.Boolean("isDirectory")
|
||||
val IS_EXACT_MATCH_DATA_KEY = EventFields.Boolean("isExactMatch")
|
||||
val FILETYPE_MATCHES_QUERY_DATA_KEY = EventFields.Boolean("fileTypeMatchesQuery")
|
||||
val IS_TOP_LEVEL_DATA_KEY = EventFields.Boolean("isTopLevel")
|
||||
val IS_EXACT_MATCH_WITH_REL_PATH_DATA_KEY = EventFields.Boolean("isExactRelativePath")
|
||||
val IS_DIRECTORY_DATA_KEY = EventFields.Boolean("is_directory")
|
||||
val IS_EXACT_MATCH_DATA_KEY = EventFields.Boolean("is_exact_match")
|
||||
val FILETYPE_MATCHES_QUERY_DATA_KEY = EventFields.Boolean("file_type_matches_query")
|
||||
val IS_TOP_LEVEL_DATA_KEY = EventFields.Boolean("is_top_level")
|
||||
val IS_EXACT_MATCH_WITH_REL_PATH_DATA_KEY = EventFields.Boolean("is_exact_relative_path")
|
||||
|
||||
val REL_PATH_NAME_FEATURE_TO_FIELD = hashMapOf<String, EventField<*>>(
|
||||
"prefix_same_start_count" to EventFields.Int("relPathPrefixSameStartCount"),
|
||||
"prefix_greedy_score" to EventFields.Double("relPathPrefixGreedyScore"),
|
||||
"prefix_matched_words_score" to EventFields.Double("relPathPrefixMatchedWordsScore"),
|
||||
"prefix_matched_words_relative" to EventFields.Double("relPathPrefixMatchedWordsRelative")
|
||||
"prefix_same_start_count" to EventFields.Int("rel_path_prefix_same_start_count"),
|
||||
"prefix_greedy_score" to EventFields.Double("rel_path_prefix_greedy_score"),
|
||||
"prefix_matched_words_score" to EventFields.Double("rel_path_prefix_matched_words_score"),
|
||||
"prefix_matched_words_relative" to EventFields.Double("rel_path_prefix_matched_words_relative")
|
||||
)
|
||||
}
|
||||
|
||||
@@ -156,15 +156,11 @@ class SearchEverywhereFileFeaturesProvider
|
||||
|
||||
|
||||
return buildList {
|
||||
val prefixMatchingFeatures = buildMap {
|
||||
buildMap {
|
||||
PrefixMatchingUtil.calculateFeatures(relativePath.toString(), searchQuery, this)
|
||||
}
|
||||
|
||||
REL_PATH_NAME_FEATURE_TO_FIELD.forEach { (key, field) ->
|
||||
val matchValue = prefixMatchingFeatures[key] ?: return@forEach
|
||||
setMatchValueToField(matchValue, field)?.let {
|
||||
add(it)
|
||||
}
|
||||
}.mapNotNullTo(this@buildList) { (featureName, value) ->
|
||||
val field = REL_PATH_NAME_FEATURE_TO_FIELD[featureName] ?: return@mapNotNullTo null
|
||||
field.tryWith(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ class SearchEverywhereFileGroupFeatureProvider : SearchEverywhereElementFeatures
|
||||
RecentFilesSEContributor::class.java) {
|
||||
|
||||
object Fields {
|
||||
val FILE_GROUP = EventFields.Enum("fileGroup", FileGroup::class.java)
|
||||
val FILE_GROUP = EventFields.Enum("file_group", FileGroup::class.java)
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> = listOf(FILE_GROUP)
|
||||
|
||||
+3
-3
@@ -21,11 +21,11 @@ import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereGen
|
||||
internal class SearchEverywhereGeneralActionFeaturesProvider
|
||||
: SearchEverywhereElementFeaturesProvider(ActionSearchEverywhereContributor::class.java, TopHitSEContributor::class.java) {
|
||||
object Fields {
|
||||
internal val IS_ENABLED = EventFields.Boolean("isEnabled")
|
||||
internal val IS_ENABLED = EventFields.Boolean("is_enabled")
|
||||
|
||||
internal val ITEM_TYPE = EventFields.Enum<GotoActionModel.MatchedValueType>("type")
|
||||
internal val TYPE_WEIGHT = EventFields.Int("typeWeight")
|
||||
internal val IS_HIGH_PRIORITY = EventFields.Boolean("isHighPriority")
|
||||
internal val TYPE_WEIGHT = EventFields.Int("type_weight")
|
||||
internal val IS_HIGH_PRIORITY = EventFields.Boolean("is_high_priority")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+5
-5
@@ -23,11 +23,11 @@ import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereOpt
|
||||
internal class SearchEverywhereOptionFeaturesProvider :
|
||||
SearchEverywhereElementFeaturesProvider(ActionSearchEverywhereContributor::class.java, TopHitSEContributor::class.java) {
|
||||
object Fields {
|
||||
internal val IS_OPTION = EventFields.Boolean("isOption")
|
||||
internal val IS_BOOLEAN_OPTION = EventFields.Boolean("isBooleanOption")
|
||||
internal val IS_REGISTRY_OPTION = EventFields.Boolean("isRegistryOption")
|
||||
internal val IS_NOT_DEFAULT = EventFields.Boolean("isNotDefault")
|
||||
internal val FROM_CONFIGURABLE = EventFields.Boolean("fromConfigurable")
|
||||
internal val IS_OPTION = EventFields.Boolean("is_option")
|
||||
internal val IS_BOOLEAN_OPTION = EventFields.Boolean("is_boolean_option")
|
||||
internal val IS_REGISTRY_OPTION = EventFields.Boolean("is_registry_option")
|
||||
internal val IS_NOT_DEFAULT = EventFields.Boolean("is_not_default")
|
||||
internal val FROM_CONFIGURABLE = EventFields.Boolean("from_configurable")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+9
-9
@@ -42,17 +42,17 @@ class SearchEverywherePsiElementFeaturesProvider : SearchEverywhereElementFeatur
|
||||
) {
|
||||
object Fields {
|
||||
@JvmStatic
|
||||
val IS_INVALID_DATA_KEY = EventFields.Boolean("isInvalid")
|
||||
val IS_INVALID_DATA_KEY = EventFields.Boolean("is_invalid")
|
||||
|
||||
val LANGUAGE_DATA_KEY = EventFields.StringValidatedByCustomRule("language", LangCustomRuleValidator::class.java)
|
||||
val LANGUAGE_USE_COUNT_DATA_KEY = EventFields.Int("langUseCount")
|
||||
val LANGUAGE_IS_MOST_USED_DATA_KEY = EventFields.Boolean("langIsMostUsed")
|
||||
val LANGUAGE_IS_IN_TOP_3_MOST_USED_DATA_KEY = EventFields.Boolean("langIsInTop3MostUsed")
|
||||
val LANGUAGE_USED_IN_LAST_DAY = EventFields.Boolean("langUsedInLastDay")
|
||||
val LANGUAGE_USED_IN_LAST_WEEK = EventFields.Boolean("langUsedInLastWeek")
|
||||
val LANGUAGE_USED_IN_LAST_MONTH = EventFields.Boolean("langUsedInLastMonth")
|
||||
val LANGUAGE_NEVER_USED_DATA_KEY = EventFields.Boolean("langNeverUsed")
|
||||
val LANGUAGE_IS_SAME_AS_OPENED_FILE = EventFields.Boolean("langSameAsOpenedFile")
|
||||
val LANGUAGE_USE_COUNT_DATA_KEY = EventFields.Int("lang_use_count")
|
||||
val LANGUAGE_IS_MOST_USED_DATA_KEY = EventFields.Boolean("lang_is_most_used")
|
||||
val LANGUAGE_IS_IN_TOP_3_MOST_USED_DATA_KEY = EventFields.Boolean("lang_is_in_top_3_most_used")
|
||||
val LANGUAGE_USED_IN_LAST_DAY = EventFields.Boolean("lang_used_in_last_day")
|
||||
val LANGUAGE_USED_IN_LAST_WEEK = EventFields.Boolean("lang_used_in_last_week")
|
||||
val LANGUAGE_USED_IN_LAST_MONTH = EventFields.Boolean("lang_used_in_last_month")
|
||||
val LANGUAGE_NEVER_USED_DATA_KEY = EventFields.Boolean("lang_never_used")
|
||||
val LANGUAGE_IS_SAME_AS_OPENED_FILE = EventFields.Boolean("lang_same_as_opened_file")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> = listOf(
|
||||
|
||||
+3
-3
@@ -19,9 +19,9 @@ import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereRun
|
||||
private class SearchEverywhereRunConfigurationFeaturesProvider
|
||||
: SearchEverywhereElementFeaturesProvider(RunConfigurationsSEContributor::class.java) {
|
||||
object Fields {
|
||||
val IS_SHARED = EventFields.Boolean("isShared")
|
||||
val IS_TEMPORARY = EventFields.Boolean("isTemporary")
|
||||
val RUN_CONFIGURATION_TYPE = EventFields.StringValidatedByCustomRule("runConfigType", SearchEverywhereRunConfigurationTypeValidator::class.java)
|
||||
val IS_SHARED = EventFields.Boolean("is_shared")
|
||||
val IS_TEMPORARY = EventFields.Boolean("is_temporary")
|
||||
val RUN_CONFIGURATION_TYPE = EventFields.StringValidatedByCustomRule("run_config_type", SearchEverywhereRunConfigurationTypeValidator::class.java)
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+4
-4
@@ -18,10 +18,10 @@ import com.intellij.searchEverywhereMl.ranking.core.features.statistician.Search
|
||||
internal class SearchEverywhereSymbolFeaturesProvider
|
||||
: SearchEverywhereElementFeaturesProvider(SymbolSearchEverywhereContributor::class.java) {
|
||||
object Fields {
|
||||
val PARENT_STAT_USE_COUNT_DATA_KEY = EventFields.Int("parentStatUseCount")
|
||||
val PARENT_STAT_IS_MOST_POPULAR_DATA_KEY = EventFields.Boolean("parentStatIsMostPopular")
|
||||
val PARENT_STAT_RECENCY_DATA_KEY = EventFields.Int("parentStatRecency")
|
||||
val PARENT_STAT_IS_MOST_RECENT_DATA_KEY = EventFields.Boolean("parentStatIsMostRecent")
|
||||
val PARENT_STAT_USE_COUNT_DATA_KEY = EventFields.Int("parent_stat_use_count")
|
||||
val PARENT_STAT_IS_MOST_POPULAR_DATA_KEY = EventFields.Boolean("parent_stat_is_most_popular")
|
||||
val PARENT_STAT_RECENCY_DATA_KEY = EventFields.Int("parent_stat_recency")
|
||||
val PARENT_STAT_IS_MOST_RECENT_DATA_KEY = EventFields.Boolean("parent_stat_is_most_recent")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
+1
-1
@@ -46,6 +46,6 @@ internal class SearchEverywhereTextFeaturesProvider : SearchEverywhereElementFea
|
||||
|
||||
|
||||
private object Fields {
|
||||
val IS_IN_COMMENT = EventFields.Boolean("isInComment")
|
||||
val IS_IN_COMMENT = EventFields.Boolean("is_in_comment")
|
||||
}
|
||||
}
|
||||
|
||||
+18
-18
@@ -11,20 +11,20 @@ import com.intellij.searchEverywhereMl.ranking.core.features.addIfTrue
|
||||
internal class ContributorsLocalStatisticsFields {
|
||||
|
||||
companion object {
|
||||
val SELECTION_ALL = EventFields.Int("selectionAll")
|
||||
val SELECTION_OTHER = EventFields.Int("selectionOther")
|
||||
val SELECTION_TO_MAX_ALL = EventFields.Double("selectionToMaxAll")
|
||||
val SELECTION_TO_MAX_OTHER = EventFields.Double("selectionToMaxOther")
|
||||
val TIME_SINCE_LAST_SELECTION_ALL = EventFields.Long("timeSinceLastSelectionAll")
|
||||
val TIME_SINCE_LAST_SELECTION_OTHER = EventFields.Long("timeSinceLastSelectionOther")
|
||||
val WAS_SELECTED_IN_LAST_MINUTE_ALL = EventFields.Boolean("wasSelectedInLastMinuteAll")
|
||||
val WAS_SELECTED_IN_LAST_MINUTE_OTHER = EventFields.Boolean("wasSelectedInLastMinuteOther")
|
||||
val WAS_SELECTED_IN_LAST_HOUR_ALL = EventFields.Boolean("wasSelectedInLastHourAll")
|
||||
val WAS_SELECTED_IN_LAST_HOUR_OTHER = EventFields.Boolean("wasSelectedInLastHourOther")
|
||||
val WAS_SELECTED_IN_LAST_DAY_ALL = EventFields.Boolean("wasSelectedInLastDayAll")
|
||||
val WAS_SELECTED_IN_LAST_DAY_OTHER = EventFields.Boolean("wasSelectedInLastDayOther")
|
||||
val WAS_SELECTED_IN_LAST_MONTH_ALL = EventFields.Boolean("wasSelectedInLastMonthAll")
|
||||
val WAS_SELECTED_IN_LAST_MONTH_OTHER = EventFields.Boolean("wasSelectedInLastMonthOther")
|
||||
val SELECTION_ALL = EventFields.Int("selection_all")
|
||||
val SELECTION_OTHER = EventFields.Int("selection_other")
|
||||
val SELECTION_TO_MAX_ALL = EventFields.Double("selection_to_max_all")
|
||||
val SELECTION_TO_MAX_OTHER = EventFields.Double("selection_to_max_other")
|
||||
val TIME_SINCE_LAST_SELECTION_ALL = EventFields.Long("time_since_last_selection_all")
|
||||
val TIME_SINCE_LAST_SELECTION_OTHER = EventFields.Long("time_since_last_selection_other")
|
||||
val WAS_SELECTED_IN_LAST_MINUTE_ALL = EventFields.Boolean("was_selected_in_last_minute_all")
|
||||
val WAS_SELECTED_IN_LAST_MINUTE_OTHER = EventFields.Boolean("was_selected_in_last_minute_other")
|
||||
val WAS_SELECTED_IN_LAST_HOUR_ALL = EventFields.Boolean("was_selected_in_last_hour_all")
|
||||
val WAS_SELECTED_IN_LAST_HOUR_OTHER = EventFields.Boolean("was_selected_in_last_hour_other")
|
||||
val WAS_SELECTED_IN_LAST_DAY_ALL = EventFields.Boolean("was_selected_in_last_day_all")
|
||||
val WAS_SELECTED_IN_LAST_DAY_OTHER = EventFields.Boolean("was_selected_in_last_day_other")
|
||||
val WAS_SELECTED_IN_LAST_MONTH_ALL = EventFields.Boolean("was_selected_in_last_month_all")
|
||||
val WAS_SELECTED_IN_LAST_MONTH_OTHER = EventFields.Boolean("was_selected_in_last_month_other")
|
||||
}
|
||||
|
||||
fun getFieldsDeclaration(): List<EventField<*>> = listOf(
|
||||
@@ -102,10 +102,10 @@ internal class ContributorsLocalStatisticsFields {
|
||||
internal class ContributorsLocalStatisticsContextFields {
|
||||
|
||||
companion object {
|
||||
val MAX_SELECTION_ALL = EventFields.Int("maxSelectionAll")
|
||||
val MIN_SELECTION_ALL = EventFields.Int("minSelectionAll")
|
||||
val MAX_SELECTION_OTHER = EventFields.Int("maxSelectionOther")
|
||||
val MIN_SELECTION_OTHER = EventFields.Int("minSelectionOther")
|
||||
val MAX_SELECTION_ALL = EventFields.Int("max_selection_all")
|
||||
val MIN_SELECTION_ALL = EventFields.Int("min_selection_all")
|
||||
val MAX_SELECTION_OTHER = EventFields.Int("max_selection_other")
|
||||
val MIN_SELECTION_OTHER = EventFields.Int("min_selection_other")
|
||||
}
|
||||
|
||||
fun getFieldsDeclaration(): List<EventField<*>> = listOf(MAX_SELECTION_ALL, MIN_SELECTION_ALL, MAX_SELECTION_OTHER,
|
||||
|
||||
+10
-6
@@ -3,7 +3,11 @@ package com.intellij.searchEverywhereMl.ranking.core.model
|
||||
|
||||
import com.intellij.internal.ml.DecisionFunction
|
||||
import com.intellij.internal.ml.FeatureMapper
|
||||
import com.intellij.textMatching.WholeTextMatchUtil
|
||||
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereElementFeaturesProvider.Companion.WHOLE_EXACTLY_MATCHED_WORDS
|
||||
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereElementFeaturesProvider.Companion.WHOLE_LEVENSHTEIN_DISTANCE_CASE_INSENSITIVE
|
||||
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereElementFeaturesProvider.Companion.WHOLE_WORDS_IN_ELEMENT
|
||||
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereElementFeaturesProvider.Companion.WHOLE_WORDS_IN_QUERY
|
||||
import com.intellij.searchEverywhereMl.ranking.core.features.SearchEverywhereFileFeaturesProvider.Fields.FILETYPE_MATCHES_QUERY_DATA_KEY
|
||||
|
||||
internal abstract class SearchEverywhereRankingModel(protected val model: DecisionFunction) {
|
||||
abstract fun predict(features: Map<String, Any?>): Double
|
||||
@@ -55,10 +59,10 @@ internal class ExactMatchSearchEverywhereRankingModel(model: DecisionFunction) :
|
||||
* @return true if the features represent an exact match, false otherwise.
|
||||
*/
|
||||
private fun isExactMatch(features: Map<String, Any?>): Boolean {
|
||||
val wordsInQuery = features.getOrDefault("${WholeTextMatchUtil.baseName}WordsInQuery", 0)
|
||||
val wordsInElement = features.getOrDefault("${WholeTextMatchUtil.baseName}WordsInElement", 0)
|
||||
val exactlyMatchedWords = features.getOrDefault("${WholeTextMatchUtil.baseName}ExactlyMatchedWords", 0)
|
||||
val levenshteinDistance = features.getOrDefault("${WholeTextMatchUtil.baseName}LevenshteinDistanceCaseInsensitive", 1.0)
|
||||
val wordsInQuery = features.getOrDefault(WHOLE_WORDS_IN_QUERY.name, 0)
|
||||
val wordsInElement = features.getOrDefault(WHOLE_WORDS_IN_ELEMENT.name, 0)
|
||||
val exactlyMatchedWords = features.getOrDefault(WHOLE_EXACTLY_MATCHED_WORDS.name, 0)
|
||||
val levenshteinDistance = features.getOrDefault(WHOLE_LEVENSHTEIN_DISTANCE_CASE_INSENSITIVE.name, 1.0)
|
||||
val allWordsMatch = (wordsInElement == wordsInQuery
|
||||
&& wordsInElement == exactlyMatchedWords
|
||||
&& exactlyMatchedWords != 0)
|
||||
@@ -69,7 +73,7 @@ internal class ExactMatchSearchEverywhereRankingModel(model: DecisionFunction) :
|
||||
override fun predict(features: Map<String, Any?>): Double {
|
||||
|
||||
val isExactMatch = isExactMatch(features)
|
||||
val isExtensionMatch = features.getOrDefault("fileTypeMatchesQuery", false) == true
|
||||
val isExtensionMatch = features.getOrDefault(FILETYPE_MATCHES_QUERY_DATA_KEY.name, false) == true
|
||||
val mlPrediction = simpleModel.predict(features)
|
||||
val isNameAndExtensionMatch = isExactMatch && isExtensionMatch
|
||||
val isNameOnlyMatch = isExactMatch && !isExtensionMatch
|
||||
|
||||
+40
-3
@@ -14,6 +14,7 @@ import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatistics
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.GROUP
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.ITEM_SELECTED
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.REBUILD_REASON_KEY
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.SEARCH_INDEX_DATA_KEY
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.SESSION_DURATION
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.SESSION_FINISHED
|
||||
import com.intellij.searchEverywhereMl.ranking.core.SearchEverywhereMLStatisticsCollector.SESSION_ID
|
||||
@@ -184,7 +185,7 @@ class SearchEverywhereMlStatisticsCollectorTest : SearchEverywhereLoggingTestCas
|
||||
// Check that search index is incremented for each search restart
|
||||
var previousIndex = -1
|
||||
for (event in searchRestartedEvents) {
|
||||
val currentIndex = event.event.data["searchIndex"] as Int
|
||||
val currentIndex = event.event.data[SEARCH_INDEX_DATA_KEY.name] as Int
|
||||
assertTrue("Search index should be incremented", currentIndex > previousIndex)
|
||||
previousIndex = currentIndex
|
||||
}
|
||||
@@ -213,13 +214,49 @@ class SearchEverywhereMlStatisticsCollectorTest : SearchEverywhereLoggingTestCas
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `all EventField names are snake_case`() {
|
||||
val snakeCase = Regex("^[a-z0-9]+(?:_[a-z0-9]+)*$")
|
||||
val errors = mutableListOf<String>()
|
||||
|
||||
GROUP.events.forEach { event ->
|
||||
event.getFields()
|
||||
.getFieldsRecursively()
|
||||
.forEach { field ->
|
||||
if (!snakeCase.matches(field.name)) {
|
||||
errors.add("Event ${event.eventId} has non-snake_case field name '${field.name}'")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.isNotEmpty()) {
|
||||
fail(errors.joinToString("\n"))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `all event ids are lowercase dot separated words`() {
|
||||
val dotSeparatedLower = Regex("^[a-z0-9]+(?:\\.[a-z0-9]+)*$")
|
||||
val errors = mutableListOf<String>()
|
||||
|
||||
GROUP.events.forEach { event ->
|
||||
if (!dotSeparatedLower.matches(event.eventId)) {
|
||||
errors.add("Event id '${event.eventId}' is not lowercase dot-separated words")
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.isNotEmpty()) {
|
||||
fail(errors.joinToString("\n"))
|
||||
}
|
||||
}
|
||||
|
||||
private fun List<EventField<*>>.getFieldsRecursively(): List<EventField<*>> {
|
||||
return fold(emptyList()) { acc, field ->
|
||||
when (field) {
|
||||
is PrimitiveEventField<*> -> acc + field
|
||||
is ListEventField<*> -> acc + field
|
||||
is ObjectEventField -> acc + field.fields.toList().getFieldsRecursively()
|
||||
is ObjectListEventField -> acc + field.fields.toList().getFieldsRecursively()
|
||||
is ObjectEventField -> acc + field + field.fields.toList().getFieldsRecursively()
|
||||
is ObjectListEventField -> acc + field + field.fields.toList().getFieldsRecursively()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -122,7 +122,7 @@ internal class SearchEverywhereJavaPsiElementFeatureProvider : SearchEverywhereE
|
||||
}
|
||||
|
||||
internal object Fields {
|
||||
val PACKAGE_DISTANCE_DATA_KEY = EventFields.Int("packageDistance")
|
||||
val PACKAGE_DISTANCE_NORMALIZED_DATA_KEY = EventFields.Double("packageDistanceNorm")
|
||||
val PACKAGE_DISTANCE_DATA_KEY = EventFields.Int("package_distance")
|
||||
val PACKAGE_DISTANCE_NORMALIZED_DATA_KEY = EventFields.Double("package_distance_norm")
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -16,10 +16,10 @@ import com.intellij.searchEverywhereMl.ranking.vcs.SearchEverywhereVcsFileFeatur
|
||||
|
||||
class SearchEverywhereVcsFileFeaturesProvider : SearchEverywhereElementFeaturesProvider(FileSearchEverywhereContributor::class.java) {
|
||||
object Fields {
|
||||
val IS_IGNORED_DATA_KEY = EventFields.Boolean("isIgnored")
|
||||
val IS_CHANGED_DATA_KEY = EventFields.Boolean("isChanged")
|
||||
val IS_IGNORED_DATA_KEY = EventFields.Boolean("is_ignored")
|
||||
val IS_CHANGED_DATA_KEY = EventFields.Boolean("is_changed")
|
||||
val FILE_STATUS_DATA_KEY = EventFields.String(
|
||||
"fileStatus",
|
||||
"file_status",
|
||||
listOf(
|
||||
"NOT_CHANGED", "NOT_CHANGED_IMMEDIATE", "NOT_CHANGED_RECURSIVE",
|
||||
"DELETED", "MODIFIED", "ADDED", "MERGED", "UNKNOWN",
|
||||
|
||||
+10
-10
@@ -29,17 +29,17 @@ import org.jetbrains.yaml.navigation.YAMLKeysSearchEverywhereContributor
|
||||
|
||||
private class SEYamlKeyFeaturesProvider : SearchEverywhereElementFeaturesProvider(YAMLKeysSearchEverywhereContributor::class.java) {
|
||||
object Fields {
|
||||
val KEY_IS_MOST_RECENTLY_USED = EventFields.Boolean("yamlKeyIsMostRecentlyUsed")
|
||||
val KEY_IS_IN_TOP_5_RECENTLY_USED = EventFields.Boolean("yamlKeyIsInTop5RecentlyUsed")
|
||||
val KEY_NEVER_USED = EventFields.Boolean("yamlKeyNeverUsed")
|
||||
val KEY_IS_MOST_POPULAR = EventFields.Boolean("yamlKeyIsMostPopular")
|
||||
val KEY_IS_MOST_RECENTLY_USED = EventFields.Boolean("yaml_key_is_most_recently_used")
|
||||
val KEY_IS_IN_TOP_5_RECENTLY_USED = EventFields.Boolean("yaml_key_is_in_top_5_recently_used")
|
||||
val KEY_NEVER_USED = EventFields.Boolean("yaml_key_never_used")
|
||||
val KEY_IS_MOST_POPULAR = EventFields.Boolean("yaml_key_is_most_popular")
|
||||
|
||||
val FILE_RECENCY_INDEX = EventFields.Int("yamlFileRecencyIndex")
|
||||
val FILE_TIME_SINCE_LAST_MODIFICATION = EventFields.Long("yamlTimeSinceLastModification")
|
||||
val FILE_MODIFIED_IN_LAST_HOUR = EventFields.Boolean("yamlFileModifiedInLastHour")
|
||||
val FILE_MODIFIED_IN_LAST_DAY = EventFields.Boolean("yamlFileModifiedInLastDay")
|
||||
val FILE_MODIFIED_IN_LAST_WEEK = EventFields.Boolean("yamlFileModifiedInLastWeek")
|
||||
val FILE_MODIFIED_IN_LAST_MONTH = EventFields.Boolean("yamlFileModifiedInLastMonth")
|
||||
val FILE_RECENCY_INDEX = EventFields.Int("yaml_file_recency_index")
|
||||
val FILE_TIME_SINCE_LAST_MODIFICATION = EventFields.Long("yaml_time_since_last_modification")
|
||||
val FILE_MODIFIED_IN_LAST_HOUR = EventFields.Boolean("yaml_file_modified_in_last_hour")
|
||||
val FILE_MODIFIED_IN_LAST_DAY = EventFields.Boolean("yaml_file_modified_in_last_day")
|
||||
val FILE_MODIFIED_IN_LAST_WEEK = EventFields.Boolean("yaml_file_modified_in_last_week")
|
||||
val FILE_MODIFIED_IN_LAST_MONTH = EventFields.Boolean("yaml_file_modified_in_last_month")
|
||||
}
|
||||
|
||||
override fun getFeaturesDeclarations(): List<EventField<*>> {
|
||||
|
||||
Reference in New Issue
Block a user