{
	"name": "CirrusSearch",
	"author": [
		"Nik Everett",
		"Chad Horohoe",
		"Erik Bernhardson"
	],
	"url": "https://www.mediawiki.org/wiki/Extension:CirrusSearch",
	"descriptionmsg": "cirrussearch-desc",
	"license-name": "GPL-2.0-or-later",
	"type": "other",
	"requires": {
		"MediaWiki": ">= 1.46",
		"extensions": {
			"Elastica": ">= 6.0.1"
		}
	},
	"Actions": {
		"cirrusdump": "CirrusSearch\\Dump",
		"cirrussuggestdump": "CirrusSearch\\SuggestDump"
	},
	"APIModules": {
		"cirrus-config-dump": "CirrusSearch\\Api\\ConfigDump",
		"cirrus-profiles-dump": "CirrusSearch\\Api\\ProfilesDump",
		"cirrus-schema-dump": "CirrusSearch\\Api\\SchemaDump",
		"cirrus-check-sanity": "CirrusSearch\\Api\\CheckSanity"
	},
	"APIPropModules": {
		"cirrusbuilddoc": "CirrusSearch\\Api\\QueryBuildDocument",
		"cirrusdoc": "CirrusSearch\\Api\\QueryCirrusDoc",
		"cirruscompsuggestbuilddoc": "CirrusSearch\\Api\\QueryCompSuggestBuildDoc"
	},
	"ConfigRegistry": {
		"CirrusSearch": "CirrusSearch\\SearchConfig::newFromGlobals"
	},
	"JobClasses": {
		"cirrusSearchDeletePages": "CirrusSearch\\Job\\DeletePages",
		"cirrusSearchIncomingLinkCount": "CirrusSearch\\Job\\IncomingLinkCount",
		"cirrusSearchLinksUpdate": "CirrusSearch\\Job\\LinksUpdate",
		"cirrusSearchLinksUpdatePrioritized": "CirrusSearch\\Job\\LinksUpdate",
		"cirrusSearchMassIndex": "CirrusSearch\\Job\\MassIndex",
		"cirrusSearchOtherIndex": "CirrusSearch\\Job\\OtherIndex",
		"cirrusSearchElasticaWrite": "CirrusSearch\\Job\\ElasticaWrite",
		"cirrusSearchCheckerJob": "CirrusSearch\\Job\\CheckerJob",
		"cirrusSearchIndexArchive": "CirrusSearch\\Job\\IndexArchive",
		"cirrusSearchDeleteArchive": "CirrusSearch\\Job\\DeleteArchive"
	},
	"MessagesDirs": {
		"CirrusSearch": [
			"i18n",
			"i18n/api"
		]
	},
	"TestAutoloadClasses": {
		"CirrusSearch\\CirrusIntegrationTestCase": "tests/phpunit/integration/CirrusIntegrationTestCase.php",
		"CirrusSearch\\CirrusIntegrationTestCaseTrait": "tests/phpunit/integration/CirrusIntegrationTestCaseTrait.php",
		"CirrusSearch\\CirrusTestCase": "tests/phpunit/unit/CirrusTestCase.php",
		"CirrusSearch\\CirrusTestCaseTrait": "tests/phpunit/unit/CirrusTestCaseTrait.php",
		"CirrusSearch\\Query\\SimpleKeywordFeatureTestTrait": "tests/phpunit/unit/Query/SimpleKeywordFeatureTestTrait.php",
		"CirrusSearch\\Query\\KeywordFeatureAssertions": "tests/phpunit/unit/Query/KeywordFeatureAssertions.php",
		"CirrusSearch\\Fallbacks\\FallbackMethodTestBase": "tests/phpunit/unit/Fallbacks/FallbackMethodTestBase.php"
	},
	"AutoloadNamespaces": {
		"CirrusSearch\\": "includes/",
		"CirrusSearch\\Maintenance\\": "maintenance/"
	},
	"TestAutoloadNamespaces": {
		"CirrusSearch\\Test\\": "tests/phpunit/unit/mocks/"
	},
	"ResourceModules": {
		"ext.cirrus.serp": {
			"scripts": [
				"resources/ext.cirrus.serp.js"
			],
			"dependencies": [
				"mediawiki.router",
				"mediawiki.util",
				"web2017-polyfills"
			],
			"styles": [],
			"messages": []
		}
	},
	"ResourceFileModulePaths": {
		"localBasePath": "",
		"remoteExtPath": "CirrusSearch"
	},
	"callback": "CirrusSearch\\Hooks::onRegistration",
	"Hooks": {
		"APIAfterExecute": "default",
		"ApiBeforeMain": "default",
		"APIQuerySiteInfoStatisticsInfo": "default",
		"APIQuerySiteInfoGeneralInfo": "apiquerysiteinfogeneralinfo",
		"PageDelete": "changelistener",
		"PageDeleteComplete": [
			"changelistener",
			"archivechangelistener"
		],
		"ArticleRevisionVisibilitySet": "changelistener",
		"PageUndeleteComplete": "archivechangelistener",
		"BeforeInitialize": "default",
		"CirrusSearchAddQueryFeatures": "weightedtags",
		"CirrusSearchAnalysisConfig": "weightedtags",
		"CirrusSearchSimilarityConfig": "weightedtags",
		"GetPreferences": "default",
		"LinksUpdateComplete": [
			"changelistener",
			"eventbusbridge"
		],
		"PrefixSearchExtractNamespace": "default",
		"ResourceLoaderGetConfigVars": "default",
		"SearchIndexFields": [
			"weightedtags",
			"custompagefields"
		],
		"SearchGetNearMatch": "default",
		"ShowSearchHitTitle": "default",
		"SoftwareInfo": "default",
		"SpecialSearchResults": "default",
		"SpecialSearchResultsAppend": "default",
		"SpecialStatsAddExtra": "default",
		"TitleMove": "changelistener",
		"PageMoveComplete": "changelistener",
		"UploadComplete": "changelistener",
		"UserGetDefaultOptions": "default"
	},
	"HookHandlers": {
		"default": {
			"class": "CirrusSearch\\Hooks",
			"services": [
				"ConfigFactory"
			]
		},
		"weightedtags": {
			"class": "CirrusSearch\\Search\\WeightedTagsHooks",
			"factory": "CirrusSearch\\Search\\WeightedTagsHooks::create",
			"services": [
				"ConfigFactory"
			]
		},
		"custompagefields": {
			"class": "CirrusSearch\\Hooks\\CustomPageFields"
		},
		"changelistener": {
			"class": "CirrusSearch\\ChangeListener",
			"factory": "CirrusSearch\\ChangeListener::create",
			"services": [
				"JobQueueGroup",
				"ConfigFactory",
				"ConnectionProvider",
				"RedirectLookup"
			]
		},
		"archivechangelistener": {
			"class": "CirrusSearch\\ArchiveChangeListener",
			"factory": "CirrusSearch\\ArchiveChangeListener::create",
			"services": [
				"JobQueueGroup",
				"ConfigFactory"
			]
		},
		"eventbusbridge": {
			"class": "CirrusSearch\\Event\\EventBridge",
			"factory": "CirrusSearch\\Event\\EventBusBridge::factory",
			"services": [
				"ConfigFactory",
				"MainConfig",
				"GlobalIdGenerator",
				"TitleFormatter",
				"PageStore"
			],
			"optional_services": [
				"EventBus.EventBusFactory",
				"EventBus.StreamNameMapper"
			]
		},
		"apiquerysiteinfogeneralinfo": {
			"class": "CirrusSearch\\Hooks\\CirrusSearchApiQuerySiteInfoGeneralInfoHook",
			"services": [
				"ConnectionProvider"
			]
		}
	},
	"config": {
		"CirrusSearchDefaultCluster": {
			"value": "default"
		},
		"CirrusSearchDisableUpdate": {
			"value": false
		},
		"CirrusSearchClusters": {
			"description": "If both CirrusSearchClusters and CirrusSearchWriteClusters are specified, those clusters only appearing in CirrusSearchClusters are considered read-only.",
			"merge_strategy": "provide_default",
			"value": {
				"default": [
					"localhost"
				]
			}
		},
		"CirrusSearchWriteClusters": {
			"value": null
		},
		"CirrusSearchPrivateClusters": {
			"value": null
		},
		"CirrusSearchReplicaGroup": {
			"value": "default"
		},
		"CirrusSearchCrossClusterSearch": {
			"value": false
		},
		"CirrusSearchConnectionAttempts": {
			"value": 1
		},
		"CirrusSearchShardCount": {
			"value": {
				"content": 1,
				"general": 1,
				"archive": 1,
				"titlesuggest": 1
			}
		},
		"CirrusSearchReplicas": {
			"value": "0-2"
		},
		"CirrusSearchMaxShardsPerNode": {
			"value": []
		},
		"CirrusSearchSlowSearch": {
			"value": 10
		},
		"CirrusSearchUseExperimentalHighlighter": {
			"value": false
		},
		"CirrusSearchOptimizeIndexForExperimentalHighlighter": {
			"value": false
		},
		"CirrusSearchWikimediaExtraPlugin": {
			"value": []
		},
		"CirrusSearchEnableRegex": {
			"value": true
		},
		"CirrusSearchRegexMaxDeterminizedStates": {
			"value": 20000
		},
		"CirrusSearchQueryStringMaxDeterminizedStates": {
			"value": null
		},
		"CirrusSearchQueryStringMaxWildcards": {
			"value": 3
		},
		"CirrusSearchNamespaceMappings": {
			"value": [],
			"merge_strategy": "array_plus"
		},
		"CirrusSearchExtraIndexes": {
			"value": [],
			"merge_strategy": "array_plus"
		},
		"CirrusSearchExtraIndexBoostTemplates": {
			"value": []
		},
		"CirrusSearchUpdateShardTimeout": {
			"value": "1ms"
		},
		"CirrusSearchClientSideUpdateTimeout": {
			"value": 120
		},
		"CirrusSearchClientSideConnectTimeout": {
			"value": 5
		},
		"CirrusSearchSearchShardTimeout": {
			"value": {
				"comp_suggest": "5s",
				"prefix": "5s",
				"default": "20s",
				"regex": "120s"
			}
		},
		"CirrusSearchClientSideSearchTimeout": {
			"value": {
				"comp_suggest": 10,
				"prefix": 10,
				"default": 40,
				"regex": 240
			}
		},
		"CirrusSearchMaintenanceTimeout": {
			"value": 3600
		},
		"CirrusSearchPrefixSearchStartsWithAnyWord": {
			"value": false
		},
		"CirrusSearchPhraseSlop": {
			"value": {
				"precise": 0,
				"default": 0,
				"boost": 1
			}
		},
		"CirrusSearchPhraseRescoreBoost": {
			"value": 10
		},
		"CirrusSearchPhraseRescoreWindowSize": {
			"value": 512
		},
		"CirrusSearchFunctionRescoreWindowSize": {
			"value": 8192
		},
		"CirrusSearchMoreAccurateScoringMode": {
			"value": true
		},
		"CirrusSearchFallbackProfile": {
			"value": "phrase_suggest"
		},
		"CirrusSearchFallbackProfiles": {
			"value": []
		},
		"CirrusSearchEnablePhraseSuggest": {
			"value": true
		},
		"CirrusSearchPhraseSuggestBuildVariant": {
			"value": false
		},
		"CirrusSearchPhraseSuggestProfiles": {
			"value": []
		},
		"CirrusSearchPhraseSuggestReverseField": {
			"value": {
				"build": false,
				"use": false
			}
		},
		"CirrusSearchPhraseSuggestUseText": {
			"value": false
		},
		"CirrusSearchPhraseSuggestUseOpeningText": {
			"value": false
		},
		"CirrusSearchAllowLeadingWildcard": {
			"value": true
		},
		"CirrusSearchIndexFieldsToCleanup": {
			"value": []
		},
		"CirrusSearchIndexWeightedTagsPrefixMap": {
			"value": []
		},
		"CirrusSearchIndexedRedirects": {
			"value": 1024
		},
		"CirrusSearchLinkedArticlesToUpdate": {
			"value": 25
		},
		"CirrusSearchUnlinkedArticlesToUpdate": {
			"value": 25
		},
		"CirrusSearchSimilarityProfile": {
			"value": "bm25_with_defaults"
		},
		"CirrusSearchSimilarityProfiles": {
			"value": []
		},
		"CirrusSearchWeights": {
			"value": {
				"title": 20,
				"redirect": 15,
				"category": 8,
				"heading": 5,
				"opening_text": 3,
				"text": 1,
				"auxiliary_text": 0.5,
				"file_text": 0.5
			}
		},
		"CirrusSearchPrefixWeights": {
			"value": {
				"title": 10,
				"redirect": 1,
				"title_asciifolding": 7,
				"redirect_asciifolding": 0.7
			}
		},
		"CirrusSearchBoostOpening": {
			"value": "first_heading"
		},
		"CirrusSearchNearMatchWeight": {
			"value": 2
		},
		"CirrusSearchStemmedWeight": {
			"value": 0.5
		},
		"CirrusSearchNamespaceWeights": {
			"value": {
				"2": 0.05,
				"4": 0.1,
				"8": 0.05,
				"10": 0.005,
				"12": 0.1
			},
			"merge_strategy": "array_plus"
		},
		"CirrusSearchDefaultNamespaceWeight": {
			"value": 0.2
		},
		"CirrusSearchTalkNamespaceWeight": {
			"value": 0.25
		},
		"CirrusSearchLanguageWeight": {
			"value": {
				"user": 0,
				"wiki": 0
			}
		},
		"CirrusSearchPreferRecentDefaultDecayPortion": {
			"value": 0
		},
		"CirrusSearchPreferRecentUnspecifiedDecayPortion": {
			"value": 0.6
		},
		"CirrusSearchPreferRecentDefaultHalfLife": {
			"value": 160
		},
		"CirrusSearchMoreLikeThisConfig": {
			"value": {
				"min_doc_freq": 2,
				"max_doc_freq": null,
				"max_query_terms": 25,
				"min_term_freq": 2,
				"min_word_length": 0,
				"max_word_length": 0,
				"minimum_should_match": "30%"
			}
		},
		"CirrusSearchMoreLikeThisMaxQueryTermsLimit": {
			"value": 100
		},
		"CirrusSearchMoreLikeThisFields": {
			"value": [
				"text"
			]
		},
		"CirrusSearchMoreLikeThisAllowedFields": {
			"value": [
				"title",
				"text",
				"auxiliary_text",
				"opening_text",
				"headings"
			]
		},
		"CirrusSearchClusterOverrides": {
			"value": []
		},
		"CirrusSearchMoreLikeThisTTL": {
			"value": 0
		},
		"CirrusSearchFetchConfigFromApi": {
			"value": false
		},
		"CirrusSearchInterwikiSources": {
			"value": []
		},
		"CirrusSearchCrossProjectOrder": {
			"value": "static"
		},
		"CirrusSearchCrossProjectBlockScorerProfiles": {
			"value": []
		},
		"CirrusSearchInterwikiHTTPTimeout": {
			"value": 10
		},
		"CirrusSearchInterwikiHTTPConnectTimeout": {
			"value": 5
		},
		"CirrusSearchRefreshInterval": {
			"value": 1
		},
		"CirrusSearchUpdateDelay": {
			"value": {
				"prioritized": 0,
				"default": 0
			}
		},
		"CirrusSearchBannedPlugins": {
			"value": []
		},
		"CirrusSearchUpdateConflictRetryCount": {
			"value": 5
		},
		"CirrusSearchFragmentSize": {
			"value": 150
		},
		"CirrusSearchIndexAllocation": {
			"value": {
				"include": [],
				"exclude": [],
				"require": []
			}
		},
		"CirrusSearchPoolCounterKey": {
			"value": "_elasticsearch"
		},
		"CirrusSearchMergeSettings": {
			"value": []
		},
		"CirrusSearchLogElasticRequests": {
			"value": true
		},
		"CirrusSearchLogElasticRequestsSecret": {
			"value": false
		},
		"CirrusSearchMaxFullTextQueryLength": {
			"value": 300
		},
		"CirrusSearchMaxIncategoryOptions": {
			"value": 100
		},
		"CirrusSearchFeedbackLink": {
			"value": false
		},
		"CirrusSearchWriteBackoffExponent": {
			"value": 6
		},
		"CirrusSearchUserTesting": {
			"value": []
		},
		"CirrusSearchActiveTest": {
			"value": null
		},
		"CirrusSearchCompletionProfiles": {
			"value": []
		},
		"CirrusSearchCompletionSettings": {
			"value": "fuzzy"
		},
		"CirrusSearchUseIcuFolding": {
			"value": "default"
		},
		"CirrusSearchICUNormalizationUnicodeSetFilter": {
			"value": null
		},
		"CirrusSearchICUFoldingUnicodeSetFilter": {
			"value": null
		},
		"CirrusSearchUseIcuTokenizer": {
			"value": "default"
		},
		"CirrusSearchCompletionDefaultScore": {
			"value": "quality"
		},
		"CirrusSearchUseCompletionSuggester": {
			"value": "no"
		},
		"CirrusSearchCompletionSuggesterSubphrases": {
			"value": {
				"build": false,
				"use": false,
				"type": "anywords",
				"limit": 10
			}
		},
		"CirrusSearchCompletionSuggesterUseDefaultSort": {
			"value": false
		},
		"CirrusSearchCompletionSuggesterHardLimit": {
			"value": 50
		},
		"CirrusSearchRecycleCompletionSuggesterIndex": {
			"value": true
		},
		"CirrusSearchEnableAltLanguage": {
			"value": false
		},
		"CirrusSearchLanguageToWikiMap": {
			"value": []
		},
		"CirrusSearchWikiToNameMap": {
			"value": []
		},
		"CirrusSearchEnableCrossProjectSearch": {
			"value": false
		},
		"CirrusSearchCrossProjectSearchBlockList": {
			"value": []
		},
		"CirrusSearchInterwikiPrefixOverrides": {
			"value": []
		},
		"CirrusSearchCrossProjectProfiles": {
			"value": []
		},
		"CirrusSearchCrossProjectShowMultimedia": {
			"value": false
		},
		"CirrusSearchNumCrossProjectSearchResults": {
			"value": 5
		},
		"CirrusSearchInterwikiProv": {
			"value": false
		},
		"CirrusSearchRescoreProfiles": {
			"value": []
		},
		"CirrusSearchRescoreFunctionChains": {
			"value": []
		},
		"CirrusSearchRescoreProfile": {
			"value": "classic"
		},
		"CirrusSearchPrefixSearchRescoreProfile": {
			"value": "classic"
		},
		"CirrusSearchInterwikiThreshold": {
			"value": 3
		},
		"CirrusSearchLanguageDetectors": {
			"value": []
		},
		"CirrusSearchTextcatModel": {
			"value": []
		},
		"CirrusSearchTextcatConfig": {
			"value": []
		},
		"CirrusSearchMasterTimeout": {
			"value": "30s"
		},
		"CirrusSearchSanityCheck": {
			"value": true
		},
		"CirrusSearchIndexBaseName": {
			"value": "__wikiid__"
		},
		"CirrusSearchStripQuestionMarks": {
			"value": "all"
		},
		"CirrusSearchFullTextQueryBuilderProfile": {
			"value": "default"
		},
		"CirrusSearchFullTextQueryBuilderProfiles": {
			"value": []
		},
		"CirrusSearchPrefixIds": {
			"value": false
		},
		"CirrusSearchExtraBackendLatency": {
			"value": 0
		},
		"CirrusSearchBoostTemplates": {
			"value": []
		},
		"CirrusSearchIgnoreOnWikiBoostTemplates": {
			"value": false
		},
		"CirrusSearchDevelOptions": {
			"value": []
		},
		"CirrusSearchFiletypeAliases": {
			"value": []
		},
		"CirrusSearchDocumentSizeLimiterProfile": {
			"value": "default"
		},
		"CirrusSearchDocumentSizeLimiterProfiles": {
			"value": []
		},
		"CirrusSearchMaxFileTextLength": {
			"value": -1
		},
		"CirrusSearchElasticQuirks": {
			"value": []
		},
		"CirrusSearchExtraIndexSettings": {
			"value": []
		},
		"CirrusSearchIndexDeletes": {
			"value": false
		},
		"CirrusSearchEnableArchive": {
			"value": false
		},
		"CirrusSearchInterleaveConfig": {
			"value": null
		},
		"CirrusSearchMaxPhraseTokens": {
			"value": null
		},
		"CirrusSearchCategoryEndpoint": {
			"value": ""
		},
		"CirrusSearchCategoryDepth": {
			"value": 5
		},
		"CirrusSearchCategoryMax": {
			"value": 5000
		},
		"CirrusSearchNamespaceResolutionMethod": {
			"value": "elastic"
		},
		"CirrusSearchWeightedTags": {
			"description": "Configuration for features using weighted tags.",
			"value": {
				"build": false,
				"use": false,
				"max_score": 1000
			}
		},
		"CirrusSearchCompletionBannedPageIds": {
			"description": "Set of page ids to never return in completion search",
			"value": []
		},
		"CirrusSearchAutomationUserAgentRegex": {
			"description": "Regular expression used to identify http user agents of automated requests",
			"value": null
		},
		"CirrusSearchAutomationCIDRs": {
			"description": "List of CIDR strings used to identify automated requests",
			"value": []
		},
		"CirrusSearchCustomPageFields": {
			"description": "Defines additional custom fields for page indexes",
			"value": []
		},
		"CirrusSearchExtraFieldsInSearchResults": {
			"description": "Defines extra fields to add to each result",
			"value": []
		},
		"CirrusSearchEnableIncomingLinkCounting": {
			"description": "Enables queries used for counting of incoming links. Disable if an external service is updating these.",
			"value": true
		},
		"CirrusSearchDeduplicateAnalysis": {
			"description": "[experimental] Deduplicate index analysis chains",
			"value": false
		},
		"CirrusSearchUseEventBusBridge": {
			"description": "Emit page-rerenders events via EventBus (requires EventBus)",
			"value": false
		},
		"CirrusSearchDeduplicateInQuery": {
			"description": "Exclude duplicate results a priori by filtering based on 'local_sites_with_dupe'",
			"value": true
		},
		"CirrusSearchDeduplicateInMemory": {
			"description": "Exclude duplicate results afterwards in memory",
			"value": false
		},
		"CirrusSearchNaturalTitleSort": {
			"description": "Configure the optional title_natural_{asc,desc} sort orders",
			"value": {
				"build": false,
				"use": false
			}
		},
		"CirrusSearchEnableEventBusWeightedTags": {
			"description": "Enables external processing of weighted tag changes.\n Changes are offloaded via EventBus and processed by the search update pipeline.",
			"value": false
		},
		"CirrusSearchMustTrackTotalHits": {
			"description": "Return the number of total hits precisely or not, based on a query class.",
			"value": {
				"default": true
			}
		},
		"CirrusLanguageLanguageKeywordExtraFields": {
			"description": "List of fields to query when search using the inlanguage keyword",
			"value": []
		},
		"CirrusSearchManagedClusters": {
			"description": "Set of clusters CirrusSearch is allowed to maintain indices on. If unset all known clusters are used.",
			"value": null
		},
		"CirrusSearchCompletionSuggesterUseAltIndexId": {
			"description": "If set the completion suggester will this alternative index id (must be present in CirrusSearchAlternateIndices).",
			"value": null
		},
		"CirrusSearchAlternateIndices": {
			"description": "List of alternate indices to build.",
			"value": {
				"completion": []
			}
		},
		"CirrusSearchStreamingUpdaterUsername": {
			"description": "Name of the internal Cirrus Streaming Updater user allowed to bypass poolcounter protections on the cirrusbuilddoc API prop.",
			"value": null
		},
		"CirrusSearchSecondTryProfiles": {
			"description": "Set of custom second try profiles.",
			"value": []
		},
		"CirrusSearchCompletionUseSecondTryProfile": {
			"description": "Use this second try profile instead of the 'default' one",
			"value": null
		},
		"CirrusSearchCategoriesClientCacheTTL": {
			"description": "How long, in seconds, to cache responses from the categories sparql client",
			"value": 900
		},
		"CirrusSearchDefaultSemanticProfile": {
			"description": "EXPERIMENTAL. Selects the profile to use when CirrusDebugOptions requests the use of semantic search",
			"value": null
		}
	},
	"SearchMappings": {
		"CirrusSearch": {
			"class": "CirrusSearch\\CirrusSearch"
		}
	},
	"ServiceWiringFiles": [
		"includes/ServiceWiring.php"
	],
	"load_composer_autoloader": true,
	"manifest_version": 2
}
