{ "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.47.0", "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": { "class": "CirrusSearch\\Api\\CheckSanity", "services": [ "PageStore", "RedirectLookup" ] } }, "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", "cirrusSearchUpdateRedirectDocument": "CirrusSearch\\Job\\UpdateRedirectDocument", "cirrusSearchMassIndex": "CirrusSearch\\Job\\MassIndex", "cirrusSearchOtherIndex": "CirrusSearch\\Job\\OtherIndex", "cirrusSearchElasticaWrite": "CirrusSearch\\Job\\ElasticaWrite", "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": "prefixsearch_extract_namespace", "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", "UserGetReservedNamesHook": "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" ] }, "prefixsearch_extract_namespace": { "class": "MediaWiki\\Search\\Hook\\PrefixSearchExtractNamespaceHook", "factory": "CirrusSearch\\PrefixSearchExtractNamespace::create", "services": [ "MainConfig", "CirrusSearch\\NamespaceMatcher" ] } }, "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 } }, "CirrusSearchRedirectDocuments": { "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 } }, "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 }, "CirrusSearchInterwikiFallbackWithFakeConfig": { "value": false }, "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" }, "CirrusSearchCompletionPlainTokenizer": { "value": "whitespace" }, "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": [] }, "CirrusSearchRescoreProfile": { "value": "classic" }, "CirrusSearchPrefixSearchRescoreProfile": { "value": "classic" }, "CirrusSearchInterwikiThreshold": { "value": 3 }, "CirrusSearchLanguageDetectors": { "value": [] }, "CirrusSearchTextcatModel": { "value": [] }, "CirrusSearchTextcatConfig": { "value": [] }, "CirrusSearchMasterTimeout": { "value": "30s" }, "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": "utr30" }, "CirrusSearchNamespaceMatcherProfiles": { "value": [] }, "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": [] }, "CirrusSearchAutomationCIDRs": { "description": "List of CIDR strings used to identify automated requests", "value": [] }, "CirrusSearchAutomationHeaderRegexes": { "description": "Map from http header name to a regex used to identify automated requests. A request matching any pattern is flagged as automation.", "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 } }, "CirrusSearchLanguageKeywordExtraFields": { "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 CirrusSearchAlternativeIndices).", "value": null }, "CirrusSearchAlternativeIndices": { "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 }, "CirrusSearchSemanticQueryLengthThreshold": { "description": "Smallest number of whitespace separated tokens a query must have before the query length voter proposes semantic retrieval. Null leaves that voter out of the route.", "value": null }, "CirrusSearchQueryDispatchProfile": { "description": "Name of the query dispatch profile: the route table that decides, per fulltext query, which retrieval strategy runs.", "value": "default" }, "CirrusSearchQueryDispatchProfiles": { "description": "Set of custom query dispatch profiles.", "value": [] } }, "SearchMappings": { "CirrusSearch": { "class": "CirrusSearch\\CirrusSearch" } }, "ServiceWiringFiles": [ "includes/ServiceWiring.php" ], "load_composer_autoloader": true, "manifest_version": 2 }